- skills/: editable sources for all 12 personal skills (caveman family, find-skills, project-bootstrap, task-status-wiki, using-context7, using-markitdown, wiki-maintainer, compress) - dist/: built .skill archives, committed (cross-machine deploy without needing zip on the target) - scripts/build.sh + build.ps1: zip skills/<name>/ into dist/<name>.skill; Windows fallback uses .NET ZipArchive (PS 5.1 Compress-Archive writes backslashes that break extraction on *nix) - scripts/install.sh: copy skills/<name>/ into ~/.claude/skills/<name>/ ($CLAUDE_SKILLS_DIR overrides target) - .wiki/source/repo-layout.md, build-notes.md: design + gotchas - .gitignore: keep dist/ tracked Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.9 KiB
4.9 KiB
name, description
| name | description |
|---|---|
| task-status-wiki | Manage a persistent task status wiki inside a monorepo using the .tasks/ folder pattern. Use this skill whenever the user is switching between tasks, resuming a paused task, starting a new task, asking "where were we", or wanting to track progress across multiple parallel workstreams. Also use when the user says "pause", "switch to X", "what's the status", "update status", or "initialize task tracking". Trigger even if the user doesn't explicitly mention the wiki — any context-switching or multi-task coordination question in a code project is a signal to use this skill. |
Task Status Wiki
A pattern for maintaining compressed working context across parallel tasks in a monorepo.
The agent reads and updates a small wiki in .tasks/ so that every session starts oriented
and every switch costs seconds, not minutes.
Structure
<monorepo-root>/
.tasks/
STATUS.md ← board: one block per task, sorted by priority
<task-slug>.md ← deep context per task, one file each
Commit .tasks/ to git. Decision history is valuable; diffs show how thinking evolved.
STATUS.md format
# Task Board
_Updated: YYYY-MM-DD_
## 🔴 [task-slug] — short description
**Status:** active | paused | blocked | done
**Where I stopped:** one sentence — the exact thought or action interrupted
**Next action:** one concrete step to resume immediately
**Blocker:** (only if blocked) what is preventing progress
**Branch:** git branch name
---
Emoji convention:
- 🔴 Active — currently worked on (only one at a time)
- 🟡 Paused — in progress, resumable
- ⚪ Ready — not started, fully defined
- 🟢 Done — completed, kept until merged
- 🔵 Blocked — waiting on external input
Per-task file format (<task-slug>.md)
# <task-slug>
## Goal
One paragraph. What this achieves and why it matters in the monorepo.
## Key files
- `path/to/file.ts` — role in this task
- `path/to/other.ts:42` — specific line if relevant
## Decisions log
Reverse-chronological. Append only — never rewrite past entries.
- YYYY-MM-DD: Why X was chosen over Y
- YYYY-MM-DD: Constraint Z discovered, approach adjusted
## Open questions
- [ ] unresolved design or dependency questions
## Completed steps
- [x] steps finished this or previous sessions
## Notes
Temporary hypotheses, links, names of people to consult.
Agent operations
Session start
- Check if
.tasks/STATUS.mdexists. If not → run Initialization below. - Read
STATUS.md. - If user names a task, read its
<task-slug>.md. - Confirm in one sentence: "We're in the middle of X, next step is Y."
- Ask if the plan is still correct before doing anything.
- If STATUS.md
_Updateddate is >3 days ago, flag it and ask user to confirm current state.
Session end / pause / switch
- Update
STATUS.md: set current task to 🟡, update "Where I stopped" and "Next action". - Append to
<task-slug>.mdDecisions log any non-obvious choices made this session. - Move finished items to "Completed steps".
- Commit:
git add .tasks/ && git commit -m "chore: update task status [<task-slug>]"
Task switch
- Perform session-end operations for the current task.
- Read the target
<task-slug>.md. - Set it to 🔴 in STATUS.md (demote previous active to 🟡).
- Confirm orientation before starting work.
New task creation
- Ask: task name (slug), goal, known key files, branch name.
- Create
<task-slug>.mdwith Goal and Key files populated. - Add ⚪ block to
STATUS.md. - Create and checkout branch if it doesn't exist.
Task completion
- Resolve or drop all open questions.
- Set status to 🟢 in STATUS.md.
- Append final summary line to Decisions log.
- Remind user to delete the branch after merge.
Initialization (first time in a project)
Run when .tasks/ doesn't exist yet.
- Confirm understanding in one sentence.
- Ask: "What tasks are currently in flight? Give me each name and a one-line description."
- For each task: ask for branch, current status, and where work stopped last.
- Create
.tasks/STATUS.mdwith all tasks filled in. - Create
<task-slug>.mdfor each active or paused task. - Commit:
git add .tasks/ && git commit -m "chore: init task status wiki" - Print path to STATUS.md and confirm it's ready.
Do not invent task details — ask for what is unknown.
Rules
- Never lose "Where I stopped" — most critical field. If unclear, ask before ending session.
- One sentence per STATUS.md field — compress, don't write prose.
- Key files must be specific — not "auth module" but
packages/auth/src/useAuth.ts:87. - Decisions log is append-only — past entries are immutable.
- Commit after every session end — git log is the history of thinking.
- Always confirm orientation at session start — state understanding before acting.
- One active task at a time — only one 🔴 in STATUS.md.