mcpill 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/add-card.md +9 -0
- package/.claude/commands/append-card.md +10 -0
- package/.claude/commands/play-card.md +14 -0
- package/.claude/commands/turn.md +28 -0
- package/.claude/settings.json +10 -0
- package/.flowdeck/.flowdeckignore +5 -0
- package/.flowdeck/AGENT.md +46 -0
- package/.flowdeck/TODO.md.template +14 -0
- package/.flowdeck/_discard/start/DISCARD.md +8 -0
- package/.flowdeck/_discard/start/TODO.md +35 -0
- package/.flowdeck/_discard/start/turn.log +28 -0
- package/.flowdeck/_energy/ADR.md.template +100 -0
- package/.flowdeck/_energy/CLAUDE.md.template +95 -0
- package/.flowdeck/_energy/GENERALINSIGHTS.md.template +57 -0
- package/.flowdeck/_energy/MISSION.md.template +89 -0
- package/.flowdeck/_energy/OPEN-QUESTIONS.md.template +109 -0
- package/.flowdeck/_energy/PROJECTINSIGHTS.md.template +64 -0
- package/.flowdeck/_energy/SPEC.md.template +101 -0
- package/.flowdeck/_frozen/FROZEN.md +4 -0
- package/.flowdeck/_meld/MELD.md +4 -0
- package/.flowdeck/_stock/STOCK.md +4 -0
- package/.flowdeck/reframe/TODO.md +71 -0
- package/CHANGELOG.md +8 -0
- package/FLOWDECK.md +17 -0
- package/README.md +85 -0
- package/dist/cli.js +954 -0
- package/package.json +34 -0
- package/src/__tests__/init.test.ts +74 -0
- package/src/__tests__/loaders/config.test.ts +54 -0
- package/src/__tests__/loaders/prompts.test.ts +116 -0
- package/src/__tests__/loaders/resources.test.ts +86 -0
- package/src/__tests__/loaders/tools.test.ts +128 -0
- package/src/__tests__/pack.test.ts +98 -0
- package/src/__tests__/validate.test.ts +152 -0
- package/src/cli.ts +76 -0
- package/src/commands/compile.ts +163 -0
- package/src/commands/init.ts +145 -0
- package/src/commands/pack.ts +52 -0
- package/src/commands/publish.ts +17 -0
- package/src/commands/run.ts +101 -0
- package/src/commands/validate.ts +70 -0
- package/src/compiler/merge-tools.ts +99 -0
- package/src/compiler/parse.ts +236 -0
- package/src/compiler/serialize.ts +100 -0
- package/src/compiler/types.ts +27 -0
- package/src/loaders/config.ts +25 -0
- package/src/loaders/prompts.ts +60 -0
- package/src/loaders/resources.ts +54 -0
- package/src/loaders/tools.ts +63 -0
- package/src/templates/prompts/greeting.md +11 -0
- package/src/templates/server.md +9 -0
- package/src/templates/tools/echo.md +15 -0
- package/tsconfig.json +10 -0
- package/tsup.config.ts +13 -0
- package/vitest.config.ts +12 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Create a new flowdeck card. The deck is `.flowdeck/` — columns are folders, cards are `TODO.md` files.
|
|
2
|
+
|
|
3
|
+
Arguments: $ARGUMENTS
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Determine the column name from the arguments (e.g. "auth", "payments/checkout", or infer from context).
|
|
7
|
+
2. If `.flowdeck/<column>/` doesn't exist, create it.
|
|
8
|
+
3. Create `.flowdeck/<column>/TODO.md` with a title heading, brief description, and `## BOT` / `## HUMAN` sections. Add any tasks from the arguments to the relevant section.
|
|
9
|
+
4. Commit: `git add -A && git commit -m "deck: add <column> card"`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Append a task, idea, or note to an existing flowdeck card. The deck is `.flowdeck/` — columns are folders, cards are `TODO.md` files.
|
|
2
|
+
|
|
3
|
+
Arguments: $ARGUMENTS
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Identify which card to append to from the arguments or from context (e.g. which column is most relevant).
|
|
7
|
+
2. Read the card's current content.
|
|
8
|
+
3. Append to the appropriate section: `## BOT` for tasks Claude should do, `## HUMAN` for tasks the human should do, or `#### COMMENTS` for notes/ideas.
|
|
9
|
+
- If the task is a question (ends with `?`), use `flowdeck append <column> "<question>"` — the CLI will place it under `## HUMAN` with an answer placeholder.
|
|
10
|
+
4. Commit: `git add -A && git commit -m "deck: append to <column> card"`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Play a single flowdeck card.
|
|
2
|
+
|
|
3
|
+
The card slug is: $ARGUMENTS
|
|
4
|
+
|
|
5
|
+
The card is at `.flowdeck/<slug>/TODO.md`.
|
|
6
|
+
|
|
7
|
+
1. Read the card.
|
|
8
|
+
2. Complete every unchecked `- [ ]` item under `## BOT` — read files, edit code, run commands as needed.
|
|
9
|
+
3. Mark each done `- [x]` with a one-line note indented with `>`.
|
|
10
|
+
4. If something needs the human, add `- [ ]` items under `## HUMAN`.
|
|
11
|
+
5. Commit: `git add -A && git commit -m "deck: <short description>"`.
|
|
12
|
+
6. Check if any project documents (README, AGENT.md, architecture notes, changelogs) need updating based on the changes you made. If so, update them and commit: `git add -A && git commit -m "docs: <short description>"`.
|
|
13
|
+
|
|
14
|
+
Do not scan or read any other TODO.md files.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
You are playing a full turn in this flowdeck project.
|
|
2
|
+
|
|
3
|
+
Read `.flowdeck/AGENT.md` for project context (if it exists).
|
|
4
|
+
|
|
5
|
+
Walk `.flowdeck/` and collect every `TODO.md` that has at least one unchecked `- [ ]` item under `## BOT`. These are your hand. If there are no open cards, say so and stop.
|
|
6
|
+
|
|
7
|
+
## Assess the hand first
|
|
8
|
+
|
|
9
|
+
Before executing, read all cards and state your plan (a few lines):
|
|
10
|
+
|
|
11
|
+
1. **Prioritize** — decide play order. Most blocking or highest-leverage first.
|
|
12
|
+
2. **Discard** — identify cards that are duplicated or obsolete. For each, move unchecked BOT items to a `## DISCARDED` section with a one-line reason. Do not delete the card file.
|
|
13
|
+
3. **Combine** — identify cards with complementary tasks that are more efficient to execute together. Note the combination and work them in a single pass.
|
|
14
|
+
|
|
15
|
+
## Execute
|
|
16
|
+
|
|
17
|
+
For each card (or combined set), in your chosen order:
|
|
18
|
+
1. Complete every unchecked `- [ ]` item under `## BOT`
|
|
19
|
+
2. Mark each `- [x]` with a one-line note indented with `>`
|
|
20
|
+
3. If something needs the human, add `- [ ]` items under `## HUMAN`
|
|
21
|
+
4. Commit: `git add -A && git commit -m "deck: <short description>"`
|
|
22
|
+
|
|
23
|
+
## After the hand
|
|
24
|
+
|
|
25
|
+
Once all cards are played, do a holistic documentation pass:
|
|
26
|
+
- Check if any project docs (README, architecture notes, changelogs, cross-card insights) need updating based on changes made this turn — update what's out of date, leave the rest untouched
|
|
27
|
+
- Check if `.flowdeck/AGENT.md` needs updating based on what you learned — update it if so
|
|
28
|
+
- Final commit (only if anything changed): `git add -A && git commit -m "docs: post-turn"`
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Project Context
|
|
2
|
+
|
|
3
|
+
> Claude reads this file at the start of every `play` and `turn`. Keep it updated with decisions, constraints, and preferences that should inform all work in this project.
|
|
4
|
+
>
|
|
5
|
+
> The deck is `.flowdeck/`. Columns are folders inside it. Cards are `TODO.md` files.
|
|
6
|
+
> Run `flowdeck turn` to play the full hand. Run `flowdeck play <slug>` to play one card.
|
|
7
|
+
|
|
8
|
+
## Commands
|
|
9
|
+
|
|
10
|
+
- `flowdeck turn` — orchestrates cards in parallel using declared `depends:` headers
|
|
11
|
+
- `flowdeck turn --serial` — bypasses parallel execution; use when the orchestrator's grouping is wrong
|
|
12
|
+
- `flowdeck play <slug>` — plays a single card; warns if declared dependencies have open items
|
|
13
|
+
- `flowdeck play <slug> --no-dep-check` — skips dependency check
|
|
14
|
+
|
|
15
|
+
## Architecture
|
|
16
|
+
|
|
17
|
+
<!-- Describe the project structure, stack, and key conventions here. -->
|
|
18
|
+
|
|
19
|
+
## Piles
|
|
20
|
+
|
|
21
|
+
Special subfolders inside `.flowdeck/` that are **not active columns**. Bot must never treat cards inside piles as playable during `turn` or `play`.
|
|
22
|
+
|
|
23
|
+
| Pile | Purpose |
|
|
24
|
+
|------|---------|
|
|
25
|
+
| `_meld/` | Shipped cards — completed and merged |
|
|
26
|
+
| `_discard/` | Cancelled or abandoned cards |
|
|
27
|
+
| `_frozen/` | Blocked cards — each has a `FREEZE.md` with an unfreeze signal |
|
|
28
|
+
| `_stock/` | Backlog — cards not yet ready to play |
|
|
29
|
+
| `_energy/` | mdblu templates and prompts — not cards, not played |
|
|
30
|
+
|
|
31
|
+
### Frozen card protocol (`turn` responsibility)
|
|
32
|
+
|
|
33
|
+
At the start of each `turn`, the orchestrator must:
|
|
34
|
+
1. Read `.flowdeck/_frozen/FROZEN.md` (if it exists) — it lists all frozen cards and their unfreeze signals.
|
|
35
|
+
2. Evaluate each signal against current repo/project state.
|
|
36
|
+
3. Surface any cards whose unfreeze condition is now met as `- [ ]` items under `## HUMAN` in the turn summary, so the human can decide to thaw them.
|
|
37
|
+
|
|
38
|
+
The bot must not auto-unfreeze cards — only flag candidates for human review.
|
|
39
|
+
|
|
40
|
+
## Preferences
|
|
41
|
+
|
|
42
|
+
<!-- Coding style, commit format, naming conventions, etc. -->
|
|
43
|
+
|
|
44
|
+
## Current priorities
|
|
45
|
+
|
|
46
|
+
<!-- What matters most right now. Update this each turn. -->
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# flowdeck
|
|
2
|
+
|
|
3
|
+
> Human↔AI collaboration via `TODO.md` files.
|
|
4
|
+
> `## BOT` is Claude's inbox — tasks Claude should complete.
|
|
5
|
+
> `## HUMAN` is your inbox — things Claude needs from you.
|
|
6
|
+
> Run `flowdeck play -m "<what you did>"` to commit and hand off to Claude, or `flowdeck play` to hand off without a new commit.
|
|
7
|
+
|
|
8
|
+
## BOT
|
|
9
|
+
- [ ] Read `AGENT.md` and confirm you're ready
|
|
10
|
+
> Leave a short note here, then check `start/TODO.md`
|
|
11
|
+
|
|
12
|
+
## HUMAN
|
|
13
|
+
- [ ] Run `flowdeck play -m "init"` to start
|
|
14
|
+
> Claude will read this file, check `start/TODO.md`, and get to work
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Start
|
|
2
|
+
|
|
3
|
+
> Your first work area. Add tasks for Claude under `## BOT`, tasks for yourself under `## HUMAN`.
|
|
4
|
+
> Notes on a task go on the line below, indented with `>`.
|
|
5
|
+
> For a new subject, create a new folder under `.flowdeck/`. For a subtask, create a subfolder here.
|
|
6
|
+
|
|
7
|
+
## BOT
|
|
8
|
+
|
|
9
|
+
### TODO
|
|
10
|
+
|
|
11
|
+
- [ ] Example task for BOT
|
|
12
|
+
> Add notes here
|
|
13
|
+
|
|
14
|
+
#### STATUS
|
|
15
|
+
|
|
16
|
+
- Not started
|
|
17
|
+
|
|
18
|
+
#### COMMENTS
|
|
19
|
+
|
|
20
|
+
- Add any relevant comments
|
|
21
|
+
|
|
22
|
+
## HUMAN
|
|
23
|
+
|
|
24
|
+
### TODO
|
|
25
|
+
|
|
26
|
+
- [ ] Example task for HUMAN
|
|
27
|
+
> Add notes here
|
|
28
|
+
|
|
29
|
+
#### STATUS
|
|
30
|
+
|
|
31
|
+
- Not started
|
|
32
|
+
|
|
33
|
+
#### COMMENTS
|
|
34
|
+
|
|
35
|
+
- Add any relevant comments
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{"type":"system","subtype":"hook_started","hook_id":"f8045d6b-7e5a-4143-9743-ec406f85c85f","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"37256ce1-3412-4d3d-97ed-d54b3bd2fb5a","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
2
|
+
{"type":"system","subtype":"hook_started","hook_id":"abe6c80e-9b5f-43a1-abb2-75a3cab1d5f9","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"a4decbc6-54ea-48b1-bf67-c9f57bff0604","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
3
|
+
{"type":"system","subtype":"hook_started","hook_id":"e465f743-7962-4cd5-bcc9-a834b7adb052","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"44c9307c-75d4-4391-ab93-588bb9773530","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
4
|
+
{"type":"system","subtype":"hook_response","hook_id":"e465f743-7962-4cd5-bcc9-a834b7adb052","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"","stdout":"","stderr":"","exit_code":0,"outcome":"success","uuid":"cfb940a6-5b62-4fe3-8fda-95695f144437","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
5
|
+
{"type":"system","subtype":"hook_response","hook_id":"f8045d6b-7e5a-4143-9743-ec406f85c85f","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"","stdout":"","stderr":"","exit_code":0,"outcome":"success","uuid":"ba834ffc-ccd8-4108-936d-ee9fc8ca4a04","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
6
|
+
{"type":"system","subtype":"hook_response","hook_id":"abe6c80e-9b5f-43a1-abb2-75a3cab1d5f9","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"","stdout":"","stderr":"","exit_code":0,"outcome":"success","uuid":"54e2a24e-fc53-4dd7-a447-65d34d41cf37","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
7
|
+
{"type":"system","subtype":"init","cwd":"/Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","ListMcpResourcesTool","Monitor","NotebookEdit","PushNotification","Read","ReadMcpResourceTool","RemoteTrigger","ScheduleWakeup","ShareOnboardingGuide","Skill","TaskCreate","TaskGet","TaskList","TaskOutput","TaskStop","TaskUpdate","ToolSearch","WebFetch","WebSearch","Write","mcp__claude_ai_Canva__cancel-editing-transaction","mcp__claude_ai_Canva__comment-on-design","mcp__claude_ai_Canva__commit-editing-transaction","mcp__claude_ai_Canva__copy-design","mcp__claude_ai_Canva__create-design-from-brand-template","mcp__claude_ai_Canva__create-design-from-candidate","mcp__claude_ai_Canva__create-folder","mcp__claude_ai_Canva__export-design","mcp__claude_ai_Canva__generate-design","mcp__claude_ai_Canva__generate-design-structured","mcp__claude_ai_Canva__get-assets","mcp__claude_ai_Canva__get-design","mcp__claude_ai_Canva__get-design-content","mcp__claude_ai_Canva__get-design-pages","mcp__claude_ai_Canva__get-design-thumbnail","mcp__claude_ai_Canva__get-export-formats","mcp__claude_ai_Canva__get-presenter-notes","mcp__claude_ai_Canva__help","mcp__claude_ai_Canva__import-design-from-url","mcp__claude_ai_Canva__list-brand-kits","mcp__claude_ai_Canva__list-comments","mcp__claude_ai_Canva__list-folder-items","mcp__claude_ai_Canva__list-replies","mcp__claude_ai_Canva__merge-designs","mcp__claude_ai_Canva__move-item-to-folder","mcp__claude_ai_Canva__perform-editing-operations","mcp__claude_ai_Canva__reply-to-comment","mcp__claude_ai_Canva__request-outline-review","mcp__claude_ai_Canva__resize-design","mcp__claude_ai_Canva__resolve-shortlink","mcp__claude_ai_Canva__search-designs","mcp__claude_ai_Canva__search-folders","mcp__claude_ai_Canva__start-editing-transaction","mcp__claude_ai_Canva__upload-asset-from-url","mcp__claude_ai_Gmail__create_draft","mcp__claude_ai_Gmail__create_label","mcp__claude_ai_Gmail__delete_label","mcp__claude_ai_Gmail__get_thread","mcp__claude_ai_Gmail__label_message","mcp__claude_ai_Gmail__label_thread","mcp__claude_ai_Gmail__list_drafts","mcp__claude_ai_Gmail__list_labels","mcp__claude_ai_Gmail__search_threads","mcp__claude_ai_Gmail__unlabel_message","mcp__claude_ai_Gmail__unlabel_thread","mcp__claude_ai_Gmail__update_label","mcp__claude_ai_GoDaddy__domains_check_availability","mcp__claude_ai_GoDaddy__domains_suggest","mcp__claude_ai_Google_Calendar__create_event","mcp__claude_ai_Google_Calendar__delete_event","mcp__claude_ai_Google_Calendar__get_event","mcp__claude_ai_Google_Calendar__list_calendars","mcp__claude_ai_Google_Calendar__list_events","mcp__claude_ai_Google_Calendar__respond_to_event","mcp__claude_ai_Google_Calendar__suggest_time","mcp__claude_ai_Google_Calendar__update_event","mcp__claude_ai_Google_Drive__copy_file","mcp__claude_ai_Google_Drive__create_file","mcp__claude_ai_Google_Drive__download_file_content","mcp__claude_ai_Google_Drive__get_file_metadata","mcp__claude_ai_Google_Drive__get_file_permissions","mcp__claude_ai_Google_Drive__list_recent_files","mcp__claude_ai_Google_Drive__read_file_content","mcp__claude_ai_Google_Drive__search_files","mcp__claude_ai_mdblu__propose_template_update","mcp__claude_ai_mdblu__scaffold_hook","mcp__claude_ai_mdblu__use_template","mcp__claude_ai_Vercel__authenticate","mcp__claude_ai_Vercel__complete_authentication","mcp__claude_ai_WordPress_com__authenticate","mcp__claude_ai_WordPress_com__complete_authentication","mcp__htllm__deploy_menus","mcp__htllm__deploy_pages","mcp__htllm__deploy_payload","mcp__htllm__deploy_theme_mods","mcp__htllm__get_website","mcp__htllm__install_to_wp"],"mcp_servers":[{"name":"htllm","status":"connected"},{"name":"claude.ai GoDaddy","status":"connected"},{"name":"claude.ai WordPress.com","status":"needs-auth"},{"name":"claude.ai Vercel","status":"needs-auth"},{"name":"claude.ai Canva","status":"connected"},{"name":"claude.ai Gmail","status":"connected"},{"name":"claude.ai Google Calendar","status":"connected"},{"name":"claude.ai Google Drive","status":"connected"},{"name":"claude.ai mdblu","status":"connected"}],"model":"claude-sonnet-4-6","permissionMode":"bypassPermissions","slash_commands":["update-readme","analyse-html","commit-and-push","pdf-to-html","pdf-to-html.original","commit-and-pr","add-card","turn","append-card","play-card","vercel:bootstrap","vercel:deploy","vercel:env","vercel:marketplace","vercel:status","vercel:routing-middleware","vercel:deployments-cicd","vercel:auth","vercel:vercel-agent","vercel:vercel-storage","vercel:vercel-firewall","vercel:workflow","vercel:verification","vercel:vercel-cli","vercel:chat-sdk","vercel:knowledge-update","vercel:shadcn","vercel:ai-gateway","vercel:turbopack","vercel:vercel-functions","vercel:ai-sdk","vercel:runtime-cache","vercel:next-forge","vercel:next-upgrade","vercel:nextjs","vercel:env-vars","vercel:react-best-practices","vercel:next-cache-components","vercel:vercel-sandbox","update-config","verify","debug","simplify","batch","fewer-permission-prompts","loop","schedule","claude-api","run","run-skill-generator","clear","compact","context","heapdump","init","review","security-review","usage-credits","extra-usage","usage","insights","goal","team-onboarding","mcp__claude_ai_mdblu__use_doc","mcp__claude_ai_mdblu__propose_update"],"apiKeySource":"none","claude_code_version":"2.1.145","output_style":"default","agents":["claude","Explore","general-purpose","Plan","statusline-setup","vercel:ai-architect","vercel:deployment-expert","vercel:performance-optimizer"],"skills":["vercel:routing-middleware","vercel:deployments-cicd","vercel:auth","vercel:vercel-agent","vercel:vercel-storage","vercel:vercel-firewall","vercel:workflow","vercel:verification","vercel:vercel-cli","vercel:marketplace","vercel:chat-sdk","vercel:knowledge-update","vercel:bootstrap","vercel:shadcn","vercel:ai-gateway","vercel:turbopack","vercel:vercel-functions","vercel:ai-sdk","vercel:runtime-cache","vercel:next-forge","vercel:next-upgrade","vercel:nextjs","vercel:env-vars","vercel:react-best-practices","vercel:next-cache-components","vercel:vercel-sandbox","update-config","verify","debug","simplify","batch","fewer-permission-prompts","loop","schedule","claude-api","run","run-skill-generator"],"plugins":[{"name":"vercel","path":"/Users/ruco/.claude/plugins/cache/claude-plugins-official/vercel/0.43.0","source":"vercel@claude-plugins-official"}],"analytics_disabled":false,"uuid":"aac48e6c-4b05-43a4-a219-b6ca4f19bd65","memory_paths":{"auto":"/Users/ruco/.claude/projects/-Users-ruco-projects-main-mcpill-cli/memory/"},"fast_mode_state":"off"}
|
|
8
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01W4MCq44BHzi9NAeRpveoJH","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"Let me play this card. It's a starter template card with example tasks. I'll complete the BOT task (which is just an example), mark it done, and handle the rest.","signature":"EukCCmUIDRgCKkA6/2uer9SX65m15qwaapHRRC1+2NyOxEmhTvP4thK6vivrvs4sIPQNI3mbCw+1PjZ3dJzqJRl4MiARr8St9FcMMhFjbGF1ZGUtc29ubmV0LTQtNjgAQgh0aGlua2luZxIMbA/KFJcZ7maS2OcrGgwL5L5J7x9LyuVniKEiMEwFelfHTVZ+a48F2heNYYVepiF6EuPql8NfmHk+DAHBbB2CzaMFx4Bnvszue8MVPiqxAUUTlzD6UOxmLeY18kL+VByRXT+n27FtXtL7nL7KSiUceKM/jnwA6zfp/K+BpAwV5iZX2TJa6geVtSGIo0xdZEJGJnKUgyYyJKwkDbF7CTqPKSmeyeNPcM2kHB6HintrES08opG3IV7tNXgIG6FhVbFiCOSFeOfUNjiCXRyuf4mEUy//qUdVtSD+O9XlYW8u3eSiXV7g55e6CUNVVXQgEgA4QVtNe7TxudA8+aQIi8G9FxgB"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9537,"cache_read_input_tokens":14374,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":9537},"output_tokens":6,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"66b19dd7-2741-42f1-b6a2-fa32f2685cb4","request_id":"req_011CbEZD9qfMYBNJCQ5v8KmN"}
|
|
9
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01W4MCq44BHzi9NAeRpveoJH","type":"message","role":"assistant","content":[{"type":"text","text":"Reading the card — it's a starter template with placeholder tasks. I'll complete the BOT example task, update the card, and commit."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9537,"cache_read_input_tokens":14374,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":9537},"output_tokens":6,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"23261e6d-a369-42ac-a2d3-e62b1ff3e57b","request_id":"req_011CbEZD9qfMYBNJCQ5v8KmN"}
|
|
10
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01W4MCq44BHzi9NAeRpveoJH","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018kqdmbrGBW6nMXDCWVVp5u","name":"Read","input":{"file_path":"/Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/.flowdeck/start/TODO.md"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":9537,"cache_read_input_tokens":14374,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":9537},"output_tokens":6,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"e79b11a8-20fd-406e-ac85-af76c419bd18","request_id":"req_011CbEZD9qfMYBNJCQ5v8KmN"}
|
|
11
|
+
{"type":"rate_limit_event","rate_limit_info":{"status":"allowed","resetsAt":1779331200,"rateLimitType":"five_hour","overageStatus":"rejected","overageDisabledReason":"org_level_disabled","isUsingOverage":false},"uuid":"967d7c1b-d768-42e2-8f45-82955fd7c514","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed"}
|
|
12
|
+
{"type":"user","message":{"role":"user","content":[{"type":"tool_result","content":"File does not exist. Note: your current working directory is /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start.","is_error":true,"tool_use_id":"toolu_018kqdmbrGBW6nMXDCWVVp5u"}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"0801d5d0-2545-4120-86d5-643ad0aff26f","timestamp":"2026-05-20T21:47:45.516Z","tool_use_result":"Error: File does not exist. Note: your current working directory is /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start."}
|
|
13
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_016ULYqzHntnWcXacAc57eJ1","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01S3u4TaHskoUpYYXoQPoATh","name":"Bash","input":{"command":"find /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start -name \"TODO.md\" 2>/dev/null"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":229,"cache_read_input_tokens":23911,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":229},"output_tokens":58,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"3cc5e738-d4cc-4e0e-9db3-1b2716c3465e","request_id":"req_011CbEZDTvbqpwv6j6b8ZqiR"}
|
|
14
|
+
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01S3u4TaHskoUpYYXoQPoATh","type":"tool_result","content":"(Bash completed with no output)","is_error":false}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"c76612b6-1099-4813-9ae3-8a618fbcd101","timestamp":"2026-05-20T21:47:47.227Z","tool_use_result":{"stdout":"","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}
|
|
15
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_017VFH2hU69exYMtSLWGjBo3","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01AECaKktdv5cSN8Ea5Mcboh","name":"Bash","input":{"command":"ls /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":108,"cache_read_input_tokens":24140,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":108},"output_tokens":56,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"32db3198-c755-46ff-943b-3845e8693e4c","request_id":"req_011CbEZDbCA6ZZe7eUguWX4A"}
|
|
16
|
+
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01AECaKktdv5cSN8Ea5Mcboh","type":"tool_result","content":"FLOWDECK.md\npackage-lock.json\npackage.json\nREADME.md\nsrc\ntsconfig.json\ntsup.config.ts\nvitest.config.ts","is_error":false}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"c0160db3-cd09-4179-82c7-3f6c8adad34a","timestamp":"2026-05-20T21:47:48.899Z","tool_use_result":{"stdout":"FLOWDECK.md\npackage-lock.json\npackage.json\nREADME.md\nsrc\ntsconfig.json\ntsup.config.ts\nvitest.config.ts","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}
|
|
17
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_012joEt38hyUhrUDZBneJ4Pn","type":"message","role":"assistant","content":[{"type":"text","text":"The `.flowdeck/` directory doesn't exist yet in this worktree. I'll create the card structure and mark the example task done."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":131,"cache_read_input_tokens":24248,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":131},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"4d5a8a31-949f-4512-a37e-01f0e8757d8b","request_id":"req_011CbEZDiVCmtnJDMrXVjrgs"}
|
|
18
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_012joEt38hyUhrUDZBneJ4Pn","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Es6gQCmyu2BuBHX8rzaD4a","name":"Bash","input":{"command":"mkdir -p /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/.flowdeck/start"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":131,"cache_read_input_tokens":24248,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":131},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"27ab53ca-dc67-4d2c-b62d-fbcaf2e62d2d","request_id":"req_011CbEZDiVCmtnJDMrXVjrgs"}
|
|
19
|
+
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Es6gQCmyu2BuBHX8rzaD4a","type":"tool_result","content":"(Bash completed with no output)","is_error":false}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"c16c29ff-6791-4531-a9c5-cd13eeba230b","timestamp":"2026-05-20T21:47:51.408Z","tool_use_result":{"stdout":"","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":true}}
|
|
20
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01EkTR39A4SDYGESwib2QS9w","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01RUwn61zxWhY2otrhRSC4Jg","name":"Write","input":{"file_path":"/Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/.flowdeck/start/TODO.md","content":"# Start\n\n> Your first work area. Add tasks for Claude under `## BOT`, tasks for yourself under `## HUMAN`.\n> Notes on a task go on the line below, indented with `>`.\n> For a new subject, create a new folder under `.flowdeck/`. For a subtask, create a subfolder here.\n\n## BOT\n\n### TODO\n\n- [x] Example task for BOT\n > Initialized the flowdeck deck structure for the mcpill-cli worktree; card is a starter template with no real implementation tasks.\n\n#### STATUS\n\n- Done\n\n#### COMMENTS\n\n- This is the starter card. No code changes were required — it serves as the template baseline for future cards in this deck.\n\n## HUMAN\n\n### TODO\n\n- [ ] Example task for HUMAN\n > Add notes here\n\n#### STATUS\n\n- Not started\n\n#### COMMENTS\n\n- Add any relevant comments\n"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":135,"cache_read_input_tokens":24379,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":135},"output_tokens":63,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"95108749-2d48-4ba1-baa0-2a3fbfabc90a","request_id":"req_011CbEZDu6gAZ8jfPNSSTVMH"}
|
|
21
|
+
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01RUwn61zxWhY2otrhRSC4Jg","type":"tool_result","content":"File created successfully at: /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/.flowdeck/start/TODO.md (file state is current in your context — no need to Read it back)"}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"d2341e1a-39c3-4a03-84d4-9abb6ddd7c59","timestamp":"2026-05-20T21:47:56.022Z","tool_use_result":{"type":"create","filePath":"/Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/.flowdeck/start/TODO.md","content":"# Start\n\n> Your first work area. Add tasks for Claude under `## BOT`, tasks for yourself under `## HUMAN`.\n> Notes on a task go on the line below, indented with `>`.\n> For a new subject, create a new folder under `.flowdeck/`. For a subtask, create a subfolder here.\n\n## BOT\n\n### TODO\n\n- [x] Example task for BOT\n > Initialized the flowdeck deck structure for the mcpill-cli worktree; card is a starter template with no real implementation tasks.\n\n#### STATUS\n\n- Done\n\n#### COMMENTS\n\n- This is the starter card. No code changes were required — it serves as the template baseline for future cards in this deck.\n\n## HUMAN\n\n### TODO\n\n- [ ] Example task for HUMAN\n > Add notes here\n\n#### STATUS\n\n- Not started\n\n#### COMMENTS\n\n- Add any relevant comments\n","structuredPatch":[],"originalFile":null,"userModified":false}}
|
|
22
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_016vqDpcax8gYeGvR5JAvhns","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01J258Pn6zK2XKU9skt4BsxC","name":"Bash","input":{"command":"git add -A && git commit -m \"deck: initialize start card with flowdeck structure\""},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":372,"cache_read_input_tokens":24514,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":372},"output_tokens":59,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"d4443664-65d3-47ba-aec1-2c499f4ca203","request_id":"req_011CbEZEEtJTRkRCC2QrDW82"}
|
|
23
|
+
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01J258Pn6zK2XKU9skt4BsxC","type":"tool_result","content":"[deck/start a1a61c5] deck: initialize start card with flowdeck structure\n 2 files changed, 45 insertions(+)\n create mode 100644 .claude/settings.json\n create mode 100644 .flowdeck/start/TODO.md","is_error":false}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"e1f456b8-dd51-4ad1-87a0-769e76bc2059","timestamp":"2026-05-20T21:47:57.930Z","tool_use_result":{"stdout":"[deck/start a1a61c5] deck: initialize start card with flowdeck structure\n 2 files changed, 45 insertions(+)\n create mode 100644 .claude/settings.json\n create mode 100644 .flowdeck/start/TODO.md","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}
|
|
24
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01YXVXtaDucvHN8tWdEG7HxJ","type":"message","role":"assistant","content":[{"type":"text","text":"Now checking README.md and FLOWDECK.md for any needed updates."}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":151,"cache_read_input_tokens":24886,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":151},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"6884552e-1c9f-419b-a962-745e4044f76a","request_id":"req_011CbEZEP6fR4k2JmGC7VcME"}
|
|
25
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01YXVXtaDucvHN8tWdEG7HxJ","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01PSbodoCjc4GquB36mfVvRB","name":"Bash","input":{"command":"head -20 /Users/ruco/projects/main/mcpill-cli/.git/flowdeck-tmp/start/FLOWDECK.md"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":151,"cache_read_input_tokens":24886,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":151},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"e035735e-c850-48fc-b09c-a0b415b34a33","request_id":"req_011CbEZEP6fR4k2JmGC7VcME"}
|
|
26
|
+
{"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01PSbodoCjc4GquB36mfVvRB","type":"tool_result","content":"# Project\n\n## Vision\n\n<!-- One paragraph describing what this project does and why it exists. -->\n\n## Current state\n\n<!-- Bullet list of shipped capabilities. Update this after each meld. -->\n\n- (no capabilities shipped yet)\n\n## Known gaps\n\n<!-- Open known issues or missing pieces. Update this after each meld. -->\n\n- (none recorded yet)","is_error":false}]},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"773fe1fb-2821-4509-a7cf-28769712caa0","timestamp":"2026-05-20T21:48:00.129Z","tool_use_result":{"stdout":"# Project\n\n## Vision\n\n<!-- One paragraph describing what this project does and why it exists. -->\n\n## Current state\n\n<!-- Bullet list of shipped capabilities. Update this after each meld. -->\n\n- (no capabilities shipped yet)\n\n## Known gaps\n\n<!-- Open known issues or missing pieces. Update this after each meld. -->\n\n- (none recorded yet)","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}}
|
|
27
|
+
{"type":"assistant","message":{"model":"claude-sonnet-4-6","id":"msg_01SPieii4bswCA95xyAZiw6Y","type":"message","role":"assistant","content":[{"type":"text","text":"No changes needed to FLOWDECK.md or README.md — this was purely a template card with no shipped capabilities. No doc commit required.\n\nAll done — run: `flowdeck meld start`"}],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":291,"cache_read_input_tokens":25037,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":291},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"},"diagnostics":null,"context_management":null},"parent_tool_use_id":null,"session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","uuid":"18c3e520-95e7-4711-b20b-898043aa833d","request_id":"req_011CbEZEYdeWrVdjX8zmwKU4"}
|
|
28
|
+
{"type":"result","subtype":"success","is_error":false,"api_error_status":null,"duration_ms":21260,"duration_api_ms":21055,"ttft_ms":3280,"num_turns":8,"result":"No changes needed to FLOWDECK.md or README.md — this was purely a template card with no shipped capabilities. No doc commit required.\n\nAll done — run: `flowdeck meld start`","stop_reason":"end_turn","session_id":"08ff90c2-e937-49d6-a8c8-3d3b890c55ed","total_cost_usd":0.1119462,"usage":{"input_tokens":9,"cache_creation_input_tokens":10954,"cache_read_input_tokens":185489,"output_tokens":1013,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":10954,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[{"input_tokens":1,"output_tokens":48,"cache_read_input_tokens":25037,"cache_creation_input_tokens":291,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":291},"type":"message"}],"speed":"standard"},"modelUsage":{"claude-sonnet-4-6":{"inputTokens":9,"outputTokens":1013,"cacheReadInputTokens":185489,"cacheCreationInputTokens":10954,"webSearchRequests":0,"costUSD":0.1119462,"contextWindow":200000,"maxOutputTokens":32000}},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"117713f9-cd87-4cab-871e-64bc6f06a464"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Architectural Decision Record"
|
|
3
|
+
type: documentation
|
|
4
|
+
tags: [documentation, architecture, decision]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ADR-XXXX: {{PROJECT_NAME}}
|
|
8
|
+
|
|
9
|
+
**Date:** {{DATE}}
|
|
10
|
+
**Author:** {{AUTHOR}}
|
|
11
|
+
**Status:** Proposed
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<!--
|
|
16
|
+
INSTRUCTIONS FOR THE MODEL:
|
|
17
|
+
Your output must be this document with every section filled in. Do not write prose, summaries, or commentary outside the template structure.
|
|
18
|
+
The prompt below describes an architectural decision to be documented. Use it to populate each section.
|
|
19
|
+
- Context: the forces and constraints that made this decision necessary.
|
|
20
|
+
- Decision: one clear, active-voice sentence starting with "We will ...".
|
|
21
|
+
- Rationale: why this option over the alternatives.
|
|
22
|
+
- Alternatives: real options considered; why each was rejected.
|
|
23
|
+
- Consequences: honest trade-offs, including negatives.
|
|
24
|
+
- Remove HTML comments from the final output.
|
|
25
|
+
- Do not leave placeholder text, generic labels, or "..." in any field.
|
|
26
|
+
- Do not add, remove, or reorder sections.
|
|
27
|
+
-->
|
|
28
|
+
|
|
29
|
+
## Context
|
|
30
|
+
|
|
31
|
+
> {{PROMPT}}
|
|
32
|
+
|
|
33
|
+
<!-- What situation, constraint, or need forces a decision here? -->
|
|
34
|
+
|
|
35
|
+
## Decision
|
|
36
|
+
|
|
37
|
+
<!-- One clear, active-voice sentence. -->
|
|
38
|
+
|
|
39
|
+
**We will ...**
|
|
40
|
+
|
|
41
|
+
## Rationale
|
|
42
|
+
|
|
43
|
+
<!-- Why this option over the alternatives? What factors were decisive? -->
|
|
44
|
+
|
|
45
|
+
### Pros
|
|
46
|
+
|
|
47
|
+
-
|
|
48
|
+
-
|
|
49
|
+
|
|
50
|
+
### Cons
|
|
51
|
+
|
|
52
|
+
-
|
|
53
|
+
-
|
|
54
|
+
|
|
55
|
+
## Alternatives Considered
|
|
56
|
+
|
|
57
|
+
### Option A: <!-- name -->
|
|
58
|
+
|
|
59
|
+
**Description:**
|
|
60
|
+
|
|
61
|
+
**Pros:**
|
|
62
|
+
|
|
63
|
+
**Cons:**
|
|
64
|
+
|
|
65
|
+
**Why rejected:**
|
|
66
|
+
|
|
67
|
+
### Option B: <!-- name -->
|
|
68
|
+
|
|
69
|
+
**Description:**
|
|
70
|
+
|
|
71
|
+
**Pros:**
|
|
72
|
+
|
|
73
|
+
**Cons:**
|
|
74
|
+
|
|
75
|
+
**Why rejected:**
|
|
76
|
+
|
|
77
|
+
## Consequences
|
|
78
|
+
|
|
79
|
+
### Positive
|
|
80
|
+
|
|
81
|
+
-
|
|
82
|
+
|
|
83
|
+
### Negative
|
|
84
|
+
|
|
85
|
+
-
|
|
86
|
+
|
|
87
|
+
### Risks
|
|
88
|
+
|
|
89
|
+
-
|
|
90
|
+
|
|
91
|
+
## Implementation Notes
|
|
92
|
+
|
|
93
|
+
<!-- Specific steps, migrations, or flag changes needed to act on this decision -->
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
*Provided by [mdblu](https://github.com/ruco-ai/mdblu)*
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/ADR.md.template`*
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Claude Agent Context"
|
|
3
|
+
type: implementation
|
|
4
|
+
tags: [agent-context, ai-workflow, reference]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Claude Agent Context: {{PROJECT_NAME}}
|
|
8
|
+
|
|
9
|
+
**Date:** {{DATE}}
|
|
10
|
+
**Author:** {{AUTHOR}}
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
INSTRUCTIONS FOR THE MODEL:
|
|
16
|
+
Your output must be this document with every section filled in. Do not write prose, summaries, or commentary outside the template structure.
|
|
17
|
+
The prompt below describes a project that Claude will be working on. Use it to populate each section.
|
|
18
|
+
- Derive the actual language, tools, and commands from the prompt — do not assume Python/ruff/pytest.
|
|
19
|
+
- Key Files & Modules: real files and their purposes based on the prompt.
|
|
20
|
+
- Conventions & Standards: the actual stack, not generic defaults.
|
|
21
|
+
- Commands Claude Should Know: real commands for this project's toolchain.
|
|
22
|
+
- Gotchas: anything tricky or non-obvious derived from the prompt.
|
|
23
|
+
- Remove HTML comments from the final output.
|
|
24
|
+
- Do not leave placeholder text, generic labels, or language defaults that don't match the project.
|
|
25
|
+
- Do not add, remove, or reorder sections.
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
## Project Context
|
|
29
|
+
|
|
30
|
+
> {{PROMPT}}
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## What This Project Does
|
|
35
|
+
|
|
36
|
+
<!-- One clear paragraph for Claude to understand the project at a glance -->
|
|
37
|
+
|
|
38
|
+
## Key Files & Modules
|
|
39
|
+
|
|
40
|
+
| File/Module | Purpose |
|
|
41
|
+
|-------------|---------|
|
|
42
|
+
| | |
|
|
43
|
+
|
|
44
|
+
## Conventions & Standards
|
|
45
|
+
|
|
46
|
+
<!-- Fill with the actual stack derived from the prompt -->
|
|
47
|
+
|
|
48
|
+
- **Language:**
|
|
49
|
+
- **Formatter:**
|
|
50
|
+
- **Test framework:**
|
|
51
|
+
- **Commit style:**
|
|
52
|
+
|
|
53
|
+
## Important Constraints
|
|
54
|
+
|
|
55
|
+
<!-- Real constraints and rules Claude must follow for this project -->
|
|
56
|
+
|
|
57
|
+
-
|
|
58
|
+
-
|
|
59
|
+
|
|
60
|
+
## Common Patterns
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
<!-- Show a representative pattern from this codebase -->
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Commands Claude Should Know
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Run tests
|
|
70
|
+
|
|
71
|
+
# Install / build
|
|
72
|
+
|
|
73
|
+
# Lint / format
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Gotchas & Known Issues
|
|
77
|
+
|
|
78
|
+
<!-- Anything surprising or non-obvious Claude should know to avoid mistakes -->
|
|
79
|
+
|
|
80
|
+
-
|
|
81
|
+
-
|
|
82
|
+
|
|
83
|
+
## Out of Scope
|
|
84
|
+
|
|
85
|
+
<!-- What Claude should NOT do without explicit instruction -->
|
|
86
|
+
|
|
87
|
+
-
|
|
88
|
+
-
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
*Provided by [mdblu](https://github.com/ruco-ai/mdblu)*
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/CLAUDE.md.template`*
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "General Insights"
|
|
3
|
+
type: metadata
|
|
4
|
+
tags: [metadata, insights, ai-workflow]
|
|
5
|
+
last_updated: {{DATE}}
|
|
6
|
+
tool_version: {{TOOL_VERSION}}
|
|
7
|
+
privacy: local-in-v0 | collective-in-v1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# General Insights
|
|
11
|
+
|
|
12
|
+
> Transferable knowledge discovered during coding sessions — patterns, conventions, and lessons that apply beyond a single project. Written by Claude when classifying session discoveries. Read by Claude at session start across all repos. Becomes a collective pool in xtage v1.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!--
|
|
17
|
+
Format for each entry:
|
|
18
|
+
|
|
19
|
+
**[Short title]** `[language or framework tag, if applicable]`
|
|
20
|
+
**What:** One sentence describing the pattern or lesson.
|
|
21
|
+
**When:** When to apply it. What triggers this insight.
|
|
22
|
+
**Example:** Brief inline example or pointer to where it was observed.
|
|
23
|
+
**Source:** Discovered in {repo-name} on {date}.
|
|
24
|
+
**private: true** ← optional: add this line to exclude from v1 collective pool
|
|
25
|
+
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
## Coding Patterns
|
|
29
|
+
|
|
30
|
+
<!-- Language-specific or language-agnostic patterns worth repeating -->
|
|
31
|
+
|
|
32
|
+
## Refactoring Lessons
|
|
33
|
+
|
|
34
|
+
<!-- What to watch out for when refactoring specific types of code -->
|
|
35
|
+
|
|
36
|
+
## Testing Insights
|
|
37
|
+
|
|
38
|
+
<!-- What test approaches work well for which kinds of code -->
|
|
39
|
+
|
|
40
|
+
## Architecture Observations
|
|
41
|
+
|
|
42
|
+
<!-- Patterns seen working well or badly across different projects -->
|
|
43
|
+
|
|
44
|
+
## Tool & Framework Notes
|
|
45
|
+
|
|
46
|
+
<!-- Practical knowledge about specific tools, libraries, or frameworks -->
|
|
47
|
+
|
|
48
|
+
## Anti-Patterns Observed
|
|
49
|
+
|
|
50
|
+
<!-- Things that look right but consistently cause problems -->
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
*Generated by xtage {{TOOL_VERSION}} on {{DATE}} — updated by Claude at session end*
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/GENERALINSIGHTS.md.template`*
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Mission Brief"
|
|
3
|
+
type: planning
|
|
4
|
+
tags: [planning, scoping, ai-workflow]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Mission: {{PROJECT_NAME}}
|
|
8
|
+
|
|
9
|
+
**Date:** {{DATE}}
|
|
10
|
+
**Author:** {{AUTHOR}}
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
INSTRUCTIONS FOR THE MODEL:
|
|
16
|
+
Your output must be this document with every section filled in. Do not write prose, summaries, or commentary outside the template structure.
|
|
17
|
+
The prompt below is the raw input describing a task, feature, or problem. Use it to populate each section.
|
|
18
|
+
|
|
19
|
+
Rules:
|
|
20
|
+
- Each goal must be tagged [BOT] or [HUMAN]:
|
|
21
|
+
- [BOT] — implementable by an AI agent from the spec alone (coding, scaffolding, configuration, tests)
|
|
22
|
+
- [HUMAN] — requires human judgment, domain decisions, external coordination, creative input, or review
|
|
23
|
+
- Order goals by dependency: a goal that blocks others must appear before them.
|
|
24
|
+
- A [HUMAN] goal in the middle of a sequence signals a mandatory checkpoint before the next [BOT] batch can proceed.
|
|
25
|
+
- Use real descriptions derived from the prompt — not placeholder names like "Goal 1".
|
|
26
|
+
- Problem Statement: what is broken or missing without this mission.
|
|
27
|
+
- Non-Goals: explicitly out of scope to prevent drift.
|
|
28
|
+
- Success Criteria: how we know the mission is done.
|
|
29
|
+
- Deliverables: concrete outputs.
|
|
30
|
+
- Fill every table; add or remove rows as needed.
|
|
31
|
+
- Remove HTML comments from the final output.
|
|
32
|
+
- Do not leave placeholder text, generic labels, or empty cells.
|
|
33
|
+
- Do not add, remove, or reorder sections.
|
|
34
|
+
-->
|
|
35
|
+
|
|
36
|
+
## Objective
|
|
37
|
+
|
|
38
|
+
> {{PROMPT}}
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Problem Statement
|
|
43
|
+
|
|
44
|
+
<!-- What is broken, missing, or painful without this mission? Be specific. -->
|
|
45
|
+
|
|
46
|
+
## Goals
|
|
47
|
+
|
|
48
|
+
<!-- Concrete, testable goals. Each should be verifiable at completion. -->
|
|
49
|
+
|
|
50
|
+
- TODO [BOT]:
|
|
51
|
+
- TODO [HUMAN]:
|
|
52
|
+
|
|
53
|
+
## Non-Goals
|
|
54
|
+
|
|
55
|
+
<!-- Explicitly out of scope. Prevents scope creep. -->
|
|
56
|
+
|
|
57
|
+
-
|
|
58
|
+
-
|
|
59
|
+
|
|
60
|
+
## Success Criteria
|
|
61
|
+
|
|
62
|
+
<!-- How will we know this mission is done? -->
|
|
63
|
+
|
|
64
|
+
| Criterion | Measurement | Target |
|
|
65
|
+
|-----------|-------------|--------|
|
|
66
|
+
| | | |
|
|
67
|
+
|
|
68
|
+
## Constraints
|
|
69
|
+
|
|
70
|
+
<!-- Known limits that shape the approach -->
|
|
71
|
+
|
|
72
|
+
- **Time:**
|
|
73
|
+
- **Resources:**
|
|
74
|
+
- **Technical:**
|
|
75
|
+
|
|
76
|
+
## Deliverables
|
|
77
|
+
|
|
78
|
+
<!-- Concrete outputs expected at completion -->
|
|
79
|
+
|
|
80
|
+
1.
|
|
81
|
+
2.
|
|
82
|
+
3.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
*Provided by [mdblu](https://github.com/ruco-ai/mdblu)*
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
*Made with [mdblu](https://github.com/ruco-ai/mdblu) · source: `templates/MISSION.md.template`*
|