skills/chandlerhardy/chronicle-project-tracker/SKILL.md
Manage Chronicle project development using database-tracked milestones, next steps, and roadmap visualization. Works with MCP tools (fast, structured) or CLI commands (portable). Use when planning features, tracking progress, viewing roadmap, or linking sessions to milestones. Eliminates manual DEVELOPMENT_HISTORY.md updates.
npx skillsauth add aiskillstore/marketplace chronicle-project-trackerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps you manage project development meta-state using Chronicle's built-in project tracking features. Use MCP tools for programmatic access or CLI commands for portability.
This skill auto-activates! (Milestone #13)
Prompts like "what's next?" or "show roadmap" automatically trigger this skill. No manual loading needed!
Trigger patterns: what's next, show roadmap, create milestone, track progress See:
docs/HOOKS.mdfor full details
Use this skill when:
Query Tools:
mcp__chronicle__get_milestones(status, milestone_type, limit) - List milestonesmcp__chronicle__get_milestone(milestone_id) - Get milestone detailsmcp__chronicle__get_next_steps(completed, milestone_id, limit) - List next stepsmcp__chronicle__get_roadmap(days) - View project roadmapUpdate Tools:
mcp__chronicle__update_milestone_status(milestone_id, new_status) - Update statusmcp__chronicle__complete_next_step(step_id) - Mark step completeSee "CLI Commands Reference" section below for full list.
Key commands:
chronicle milestones - List milestoneschronicle roadmap - View roadmapchronicle next-steps - List next stepschronicle milestone-complete <id> - Mark completeWhen user wants to add a new feature:
Check existing roadmap to avoid duplicates:
roadmap = mcp__chronicle__get_roadmap(days=30)
# Review planned milestones
Create milestone via CLI (user runs this):
chronicle milestone "Feature name" \
--description "What it does" \
--type feature \
--priority 1 \
--tags "phase-5,api,backend"
Break down into next steps:
chronicle next-step "Design API endpoints" --priority 1 --effort medium --milestone <ID>
chronicle next-step "Write tests" --priority 2 --effort small --milestone <ID>
chronicle next-step "Document in README" --priority 3 --effort small --milestone <ID>
Update status when starting work:
mcp__chronicle__update_milestone_status(milestone_id=1, new_status="in_progress")
When completing a development session:
Get session ID from recent sessions:
sessions = mcp__chronicle__get_sessions(limit=5)
latest_session_id = sessions[0]['id']
Find active milestone:
milestones = mcp__chronicle__get_milestones(status="in_progress")
active_milestone_id = milestones[0]['id']
Link them (user runs this):
chronicle link-session <session_id> --milestone <milestone_id>
Complete next steps as work progresses:
mcp__chronicle__complete_next_step(step_id=1)
When user asks "what did I accomplish this week?":
Get roadmap:
roadmap = mcp__chronicle__get_roadmap(days=7)
Extract info:
roadmap['recently_completed'] - Milestones completed in last 7 daysroadmap['in_progress'] - Current active workroadmap['summary'] - StatisticsGet linked sessions for each completed milestone:
for milestone in roadmap['recently_completed']:
milestone_details = mcp__chronicle__get_milestone(milestone['id'])
sessions = milestone_details['linked_sessions']
# Summarize work done
Format report showing:
When user asks "what's next?" or "show me the roadmap":
# Get full roadmap
roadmap = mcp__chronicle__get_roadmap(days=7)
# Present in organized format:
print("🚧 IN PROGRESS:")
for m in roadmap['in_progress']:
print(f" - {m['title']} ({len(m['related_sessions'])} sessions)")
print("\n📋 PLANNED (High Priority):")
for m in roadmap['planned_high_priority']:
print(f" - [P{m['priority']}] {m['title']}")
print("\n🔜 NEXT STEPS:")
for step in roadmap['pending_next_steps']:
effort = f" [{step['estimated_effort']}]" if step['estimated_effort'] else ""
print(f" - [P{step['priority']}] {step['description']}{effort}")
print("\n✅ RECENTLY COMPLETED:")
for m in roadmap['recently_completed']:
print(f" - {m['title']} ({m['completed_at']})")
When all work for a milestone is done:
Verify all next steps completed:
steps = mcp__chronicle__get_next_steps(milestone_id=<ID>, completed=False)
if len(steps['next_steps']) == 0:
# All done!
Mark milestone complete (user runs):
chronicle milestone-complete <ID>
Auto-generates documentation by querying:
milestone = mcp__chronicle__get_milestone(<ID>)
# Has all linked sessions, commits, duration
# Can auto-update DEVELOPMENT_HISTORY.md or export to Obsidian
milestones = mcp__chronicle__get_milestones(status="in_progress")
for m in milestones['milestones']:
sessions = len(m['related_sessions'])
print(f"{m['title']}: {sessions} sessions so far")
roadmap = mcp__chronicle__get_roadmap()
top_planned = roadmap['planned_high_priority'][0]
print(f"Next up: {top_planned['title']} (P{top_planned['priority']})")
milestones = mcp__chronicle__get_milestones(milestone_type="optimization")
# Get all milestones
all_milestones = mcp__chronicle__get_milestones(limit=100)
for m in all_milestones['milestones']:
if 16 in m['related_sessions']:
print(f"Session 16 worked on: {m['title']}")
roadmap = mcp__chronicle__get_roadmap(days=7)
completed_count = len(roadmap['recently_completed'])
in_progress_count = len(roadmap['in_progress'])
print(f"Week of {date}:")
print(f"✅ {completed_count} milestones completed")
print(f"🚧 {in_progress_count} milestones in progress")
print(f"⏰ {roadmap['summary']['total_next_steps'] - roadmap['summary']['completed_next_steps']} pending tasks")
# Get all completed milestones
completed = mcp__chronicle__get_milestones(status="completed", limit=100)
# Calculate average time from creation to completion
durations = []
for m in completed['milestones']:
created = datetime.fromisoformat(m['created_at'])
completed_at = datetime.fromisoformat(m['completed_at'])
durations.append((completed_at - created).days)
avg_days = sum(durations) / len(durations)
print(f"Average milestone completion time: {avg_days:.1f} days")
Instead of manually updating DEVELOPMENT_HISTORY.md:
# Query completed milestones
completed = mcp__chronicle__get_milestones(status="completed")
# For each milestone, get details
for milestone in completed['milestones']:
details = mcp__chronicle__get_milestone(milestone['id'])
# Extract:
# - Title, description
# - Related sessions (with summaries)
# - Related commits (with messages)
# - Duration (from session data)
# - Files modified (from commits)
# Generate markdown section
md = f"### {details['title']}\n"
md += f"{details['description']}\n\n"
md += f"**Status**: {details['status']}\n"
md += f"**Sessions**: {len(details['linked_sessions'])}\n"
md += f"**Commits**: {len(details['linked_commits'])}\n"
# Could write to DEVELOPMENT_HISTORY.md or Obsidian
After completing a session, use this skill to:
When documenting a session to Obsidian:
When searching past work:
Milestones:
chronicle milestone "Title" --description "Desc" --type feature --priority 1 --tags "tag1,tag2"
chronicle milestones --status in_progress
chronicle milestone-show <ID>
chronicle milestone-status <ID> in_progress
chronicle milestone-complete <ID>
Next Steps:
chronicle next-step "Description" --priority 1 --effort medium --category feature --milestone <ID>
chronicle next-steps --milestone <ID>
chronicle next-step-complete <ID>
Linking:
chronicle link-session <session_id> --milestone <ID>
Roadmap:
chronicle roadmap --days 7
id - Unique IDtitle - Milestone namedescription - Detailsstatus - planned, in_progress, completed, archivedmilestone_type - feature, bugfix, optimization, documentationpriority - 1 (highest) to 5 (lowest)created_at - Creation timestampcompleted_at - Completion timestamprelated_sessions - JSON array of session IDsrelated_commits - JSON array of commit SHAstags - JSON array of tagsid - Unique IDdescription - What needs to be donepriority - 1 (highest) to 5 (lowest)estimated_effort - small, medium, largecategory - feature, optimization, fix, docscreated_by - session_16, manual, ai-suggestioncompleted - 0 or 1created_at - Creation timestampcompleted_at - Completion timestamprelated_milestone_id - FK to milestoneBefore (manual DEVELOPMENT_HISTORY.md):
After (database-tracked milestones):
Chronicle uses Chronicle to track its own development:
# Milestone #1: Add project tracking to Chronicle
chronicle milestone "Add project tracking to Chronicle" \
--description "Database-tracked milestones and next steps" \
--type feature \
--priority 1 \
--tags "phase-5,project-tracking,meta"
# Break down work
chronicle next-step "Design database schema" --priority 1 --effort medium --milestone 1
chronicle next-step "Add CLI commands" --priority 1 --effort large --milestone 1
chronicle next-step "Add MCP tools" --priority 1 --effort medium --milestone 1
chronicle next-step "Create Chronicle Skills" --priority 2 --effort medium --milestone 1
chronicle next-step "Write tests" --priority 2 --effort small --milestone 1
chronicle next-step "Update documentation" --priority 3 --effort small --milestone 1
# Mark in progress
chronicle milestone-status 1 in_progress
# As work completes
chronicle next-step-complete 1
chronicle next-step-complete 2
# ... etc
# Link current session
chronicle link-session 18 --milestone 1
# When done
chronicle milestone-complete 1
# Generate report
chronicle milestone-show 1
This skill represents Chronicle's dogfooding: using Chronicle to build Chronicle!
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.