@wrongstack/core 0.300.0 → 0.302.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.
Files changed (146) hide show
  1. package/dist/chronicle/index.d.ts +2 -0
  2. package/dist/chronicle/index.js +297 -10
  3. package/dist/chronicle/project-server.js +253 -15
  4. package/dist/chronicle/sqlite-compaction.d.ts +20 -0
  5. package/dist/chronicle/sqlite-journal.d.ts +57 -0
  6. package/dist/coordination/agents/capability-manifest.d.ts +7 -0
  7. package/dist/coordination/agents/index.d.ts +3 -2
  8. package/dist/coordination/agents/index.js +818 -570
  9. package/dist/coordination/agents/project-agent-identity.d.ts +6 -6
  10. package/dist/coordination/agents/role-skills.d.ts +1 -1
  11. package/dist/coordination/agents/types.d.ts +6 -0
  12. package/dist/coordination/director.d.ts +2 -2
  13. package/dist/coordination/index.js +6787 -6447
  14. package/dist/coordination/mail-tools.d.ts +3 -3
  15. package/dist/coordination/mailbox-project-server.js +3 -4
  16. package/dist/coordination/mailbox-types.d.ts +6 -0
  17. package/dist/core/agent-response.d.ts +5 -1
  18. package/dist/core/agent-tools.d.ts +3 -0
  19. package/dist/core/context.d.ts +20 -0
  20. package/dist/core/index.d.ts +8 -7
  21. package/dist/core/index.js +893 -284
  22. package/dist/core/instruction-template.d.ts +6 -3
  23. package/dist/core/next-steps-slot.d.ts +88 -0
  24. package/dist/core/system-prompt-builder.d.ts +5 -3
  25. package/dist/core/system-prompt-memory-skills.d.ts +1 -0
  26. package/dist/core/system-prompt-skill-bodies.d.ts +3 -3
  27. package/dist/defaults/index.js +9797 -8898
  28. package/dist/design/index.js +11 -3
  29. package/dist/execution/auto-compaction-middleware.d.ts +17 -0
  30. package/dist/execution/autonomy-brain.d.ts +8 -2
  31. package/dist/execution/brain-runtime.d.ts +3 -1
  32. package/dist/execution/compaction-core.d.ts +41 -2
  33. package/dist/execution/council-brain.d.ts +37 -2
  34. package/dist/execution/council-orchestrator.d.ts +2 -2
  35. package/dist/execution/index.d.ts +11 -10
  36. package/dist/execution/index.js +5179 -4078
  37. package/dist/execution/tool-executor.d.ts +4 -1
  38. package/dist/execution/topic-shift-advisor.d.ts +53 -0
  39. package/dist/extension/index.js +8 -2
  40. package/dist/extension/registry.d.ts +8 -1
  41. package/dist/goal/index.js +11 -3
  42. package/dist/hooks/index.js +42 -9
  43. package/dist/hooks/runner.d.ts +12 -1
  44. package/dist/hq/index.js +41 -17
  45. package/dist/hq/publisher.d.ts +21 -3
  46. package/dist/index.d.ts +21 -20
  47. package/dist/index.js +10901 -8067
  48. package/dist/infrastructure/index.js +108 -21
  49. package/dist/kernel/events/session-events.d.ts +13 -0
  50. package/dist/kernel/events/tool-events.d.ts +3 -3
  51. package/dist/models/index.d.ts +1 -0
  52. package/dist/models/index.js +17 -0
  53. package/dist/models/provider-credentials.d.ts +54 -0
  54. package/dist/plugin/index.d.ts +1 -0
  55. package/dist/plugin/index.js +2024 -502
  56. package/dist/plugins/auto-review-plugin.d.ts +3 -0
  57. package/dist/plugins/cloud-config-sync-plugin.d.ts +22 -0
  58. package/dist/plugins/review-claim-registry.d.ts +23 -8
  59. package/dist/plugins/review-types.d.ts +2 -0
  60. package/dist/registry/index.js +109 -74
  61. package/dist/registry/tool-registry.d.ts +15 -0
  62. package/dist/security/capabilities.d.ts +2 -0
  63. package/dist/security/index.d.ts +1 -1
  64. package/dist/security/index.js +9 -2
  65. package/dist/security/readonly-permission-policy.d.ts +20 -0
  66. package/dist/session-registry-atomic-file.d.ts +32 -5
  67. package/dist/session-registry-types.d.ts +17 -0
  68. package/dist/session-registry.d.ts +1 -1
  69. package/dist/skills/frontmatter.d.ts +6 -0
  70. package/dist/skills/index.js +22 -5
  71. package/dist/storage/cloud-config-sync/sanitize.d.ts +54 -0
  72. package/dist/storage/cloud-config-sync.d.ts +87 -0
  73. package/dist/storage/index.d.ts +2 -1
  74. package/dist/storage/index.js +854 -66
  75. package/dist/tools/index.d.ts +1 -1
  76. package/dist/tools/index.js +511 -234
  77. package/dist/tools/one-shot-llm-tool.d.ts +1 -0
  78. package/dist/tools/plugin-manager.d.ts +27 -0
  79. package/dist/types/config/mcp-features.d.ts +18 -11
  80. package/dist/types/config/root.d.ts +8 -1
  81. package/dist/types/config/runtime.d.ts +20 -6
  82. package/dist/types/config/skills-fleet-brain.d.ts +12 -4
  83. package/dist/types/config/tools.d.ts +16 -0
  84. package/dist/types/context-window.d.ts +1 -0
  85. package/dist/types/hooks.d.ts +14 -0
  86. package/dist/types/index.d.ts +2 -2
  87. package/dist/types/index.js +1 -0
  88. package/dist/types/multi-agent.d.ts +2 -0
  89. package/dist/types/one-shot-llm.d.ts +16 -0
  90. package/dist/types/provider.d.ts +16 -0
  91. package/dist/types/runtime-capability-manifest.d.ts +168 -0
  92. package/dist/types/skill.d.ts +5 -0
  93. package/dist/types/system-prompt.d.ts +3 -1
  94. package/dist/types/tool-executor.d.ts +8 -1
  95. package/dist/utils/context-breakdown.d.ts +8 -2
  96. package/dist/utils/index.d.ts +1 -1
  97. package/dist/utils/index.js +141 -31
  98. package/dist/utils/regex-guard.d.ts +16 -2
  99. package/dist/utils/sage-output-block.d.ts +7 -10
  100. package/dist/utils/wstack-paths.d.ts +11 -3
  101. package/instructions/agents/browser.md +1 -4
  102. package/instructions/agents/e2e.md +17 -15
  103. package/instructions/agents/ios.md +3 -3
  104. package/instructions/agents/search.md +1 -1
  105. package/instructions/autonomy/goal-preamble.md +4 -4
  106. package/instructions/coordination/director-preamble.md +2 -3
  107. package/instructions/coordination/subagent-baseline.md +3 -1
  108. package/instructions/leader-after-task.md +12 -0
  109. package/instructions/llm/chimera-review.md +1 -1
  110. package/instructions/modes/audit-lite.md +1 -1
  111. package/instructions/sections/tool/common-patterns.md +18 -2
  112. package/instructions/sections/tool/mailbox-compact.md +1 -1
  113. package/instructions/sections/tool/mailbox-full.md +1 -1
  114. package/instructions/system-lite.md +10 -0
  115. package/instructions/system-pro.md +23 -14
  116. package/instructions/system.md +22 -13
  117. package/package.json +3 -3
  118. package/skills/api-design/SKILL.md +3 -0
  119. package/skills/audit-log/SKILL.md +2 -0
  120. package/skills/auto-review/SKILL.md +6 -1
  121. package/skills/bug-hunter/SKILL.md +4 -1
  122. package/skills/chimera/SKILL.md +3 -0
  123. package/skills/data-governance/SKILL.md +3 -0
  124. package/skills/design-system/SKILL.md +5 -2
  125. package/skills/docker-deploy/SKILL.md +2 -0
  126. package/skills/git-flow/SKILL.md +2 -0
  127. package/skills/mailbox-bridge/SKILL.md +3 -0
  128. package/skills/mnemosyne/SKILL.md +2 -0
  129. package/skills/multi-agent/SKILL.md +4 -1
  130. package/skills/node-modern/SKILL.md +4 -1
  131. package/skills/observability/SKILL.md +3 -0
  132. package/skills/output-standards/SKILL.md +2 -0
  133. package/skills/plugin-author/SKILL.md +4 -1
  134. package/skills/prompt-engineering/SKILL.md +3 -1
  135. package/skills/react-modern/SKILL.md +6 -3
  136. package/skills/refactor-planner/SKILL.md +2 -0
  137. package/skills/research-web/SKILL.md +3 -0
  138. package/skills/sdd/SKILL.md +3 -1
  139. package/skills/security-scanner/SKILL.md +3 -0
  140. package/skills/skill-creator/SKILL.md +2 -0
  141. package/skills/tech-stack/SKILL.md +3 -0
  142. package/skills/testing/SKILL.md +4 -1
  143. package/skills/typescript-strict/SKILL.md +4 -1
  144. package/skills/wrongstack-kanban/SKILL.md +6 -3
  145. package/skills/wrongstack-mailbox/SKILL.md +4 -1
  146. package/skills/wrongstack-mailbox-mcp/SKILL.md +10 -8
@@ -1,15 +1,31 @@
1
1
  ## Common patterns
2
2
 
3
+ <!--ws:if tool=codebase-search tool=read tool=edit tool=grep-->
3
4
  - **Inspect before edit:** live `codebase-search` -> `read` target -> `edit`; use `grep` for exact-text confirmation
4
- - **Search then operate:** live `codebase-stats` -> missing index? live `codebase-index` -> `codebase-search` -> identify targets -> `batch_tool_use` or iterative `edit`
5
- - **Verify after mutate:** `write`/`edit`/`patch` -> `read` back to confirm -> report outcome
5
+ <!--ws:end-->
6
+ <!--ws:if tool=codebase-stats tool=codebase-index tool=codebase-search tool=edit-->
7
+ - **Search then operate:** live `codebase-stats` -> missing index? live `codebase-index` -> `codebase-search` -> identify targets -> iterative `edit`
8
+ <!--ws:end-->
9
+ <!--ws:if tool=read tool=write,edit,patch-->
10
+ - **Verify after mutate:** use a live mutation tool, then `read` back to confirm and report the outcome
11
+ <!--ws:end-->
12
+ <!--ws:if tool=tree tool=glob-->
6
13
  - **Explore project:** prefer live index-backed search for code concepts; use `tree`/`glob` for layout and paths, or as fallback when indexing is unavailable
14
+ <!--ws:end-->
15
+ <!--ws:if tool=replace-->
7
16
  - **Batch ops:** Use `replace` with glob patterns for multi-file surgical changes
17
+ <!--ws:end-->
18
+ <!--ws:if tool=memory_search-->
8
19
  - **Memory before tool calls:** Relevant memories are injected each turn; for an unfamiliar file use `memory_search` for extra context and include a hint in your reasoning
20
+ <!--ws:end-->
21
+ <!--ws:if tool=remember-->
9
22
  - **Remember useful files:** When you discover a useful file, `remember` its role with `kind: "file_note"`, an `anchor` to that path, tags: #path
10
23
  - **Remember conventions:** When you notice a pattern, `remember` it with `kind: "convention"`, appropriate scope, and tags
11
24
  - **Remember decisions:** Before resolving ambiguity, `remember` the decision with `kind: "decision"` so future turns don't re-litigate
25
+ <!--ws:end-->
26
+ <!--ws:if tool=memory_search tool=memory_graph-->
12
27
  - **Resume informed:** When starting work on a new area, `memory_search`/`memory_graph` to surface past decisions
28
+ <!--ws:end-->
13
29
  - **Memory-driven context:** Include memory hints in your reasoning during tool calls — the LLM reasons better with concrete context
14
30
 
15
31
  When unsure about a file's current state, read it first rather than assuming. When unsure about a project's conventions, search memory first.
@@ -1,3 +1,3 @@
1
1
  ## Inter-agent mailbox{{onlineAgentsInfo}}
2
2
 
3
- This is one project-wide coordination plane for every agent in every client, shared across process, session, branch, and linked-worktree boundaries. Use {{mailStatusCommand}} to see peers and current work. Use {{mailInboxCommand}} for new messages; use {{mailSendCommand}} only after choosing `to`, `audience`, and `type`: an exact id reaches one agent, a bare name/role reaches its live instances, and `to="*"` reaches the project. Normal mail uses `audience="all"`; operator/strategy mail that subagents must ignore uses `to="leader" audience="leaders"`. Use `ask` for required replies, `assign` for work, `steer` for corrections, `result` for completed evidence, and `status` only for meaningful milestones. Incoming raw mail is request-scoped: evaluate it once, preserve at most a concise durable conclusion/action when useful, otherwise acknowledge it internally and continue. Do not quote mail into the conversation or broadcast routine progress.
3
+ This is one project-wide coordination plane for every agent in every client, shared across process, session, branch, and linked-worktree boundaries. Use {{mailStatusCommand}} to see peers and current work. Use {{mailInboxCommand}} for new messages; use {{mailSendCommand}} only after choosing `to`, `audience`, and `type`: an exact id reaches one agent, a bare name/role reaches its live instances, and `to="*"` reaches the project. Normal mail uses `audience="all"`; operator/strategy mail that subagents must ignore uses `to="leader" audience="leaders"`. Set `type` to `ask` for required replies, `assign` for work, `steer` for corrections, `result` for completed evidence, and `status` only for meaningful milestones. Incoming raw mail is request-scoped: evaluate it once, preserve at most a concise durable conclusion/action when useful, otherwise acknowledge it internally and continue. Do not quote mail into the conversation or broadcast routine progress.
@@ -10,7 +10,7 @@ Before calling {{mailSendCommand}}, choose all three routing fields deliberately
10
10
 
11
11
  1. **Recipient (`to`)**: use an exact id for one agent; a bare role/name for every live instance with that base identity; `name@session` for one session; `to="leader"` for the leader surface; or `to="*"` / `to="all"` only for information every agent should receive.
12
12
  2. **Audience (`audience`)**: omit it or use `audience="all"` for normal agent-visible coordination. Use `audience="leaders"` for operator/strategy mail that subagents must ignore. Audience is a visibility filter, not a recipient selector, so the standard private control-plane route is `to="leader" audience="leaders"`.
13
- 3. **Type (`type`)**: use `ask` when a reply is required, `assign` for work ownership, `steer` for a course correction, `review` for a passive inspection request, `result` for completed output/evidence, `status` for a meaningful checkpoint, `btw` for a non-blocking aside, and `note` for other information. Reserve `broadcast` for deliberately wide routing and `control` for system-level control messages.
13
+ 3. **Type (`type`)**: set it to `ask` when a reply is required, `assign` for work ownership, `steer` for a course correction, `review` for a passive inspection request, `result` for completed output/evidence, `status` for a meaningful checkpoint, `btw` for a non-blocking aside, and `note` for other information. Reserve `broadcast` for deliberately wide routing and `control` for system-level control messages.
14
14
 
15
15
  Examples:
16
16
 
@@ -61,11 +61,21 @@ If a managed transition is rejected, repair the card details or evidence and ret
61
61
  ## Filesystem and code discovery
62
62
 
63
63
  Use `read` to inspect source, docs, config, and generated text before editing.
64
+ <!--ws:if tool=edit-->
64
65
  Use `edit` for precise changes to existing files.
66
+ <!--ws:end-->
67
+ <!--ws:if tool=write-->
65
68
  Use `write` for new files or explicit full-file replacement.
69
+ <!--ws:end-->
70
+ <!--ws:if tool=patch-->
66
71
  Use `patch` only when applying an existing unified diff.
72
+ <!--ws:end-->
73
+ <!--ws:if tool=diff-->
67
74
  Use `diff` to review working changes before reporting completion.
75
+ <!--ws:end-->
76
+ <!--ws:if tool=json-->
68
77
  Use `json` for JSON, JSON5, and YAML parsing or querying.
78
+ <!--ws:end-->
69
79
  Use `glob` to find files by path pattern.
70
80
  Use `grep` to search exact text or regular expressions inside files.
71
81
  <!--ws:if tool=tree-->
@@ -92,7 +92,11 @@ Reasoning depth is a dial, not a constant. Match it to the blast radius of what
92
92
  <!--ws:if tool=codebase-incoming-calls-->
93
93
  When refactoring or tracing usages of a function/symbol, use `codebase-incoming-calls` instead of `grep` to find all callers instantly.
94
94
  <!--ws:end-->
95
- 2. **Prefer surgical edits over rewrites.** Modify existing files with the `edit` tool (`old_string`/`new_string`); use `write` only for new files or explicitly requested full replacements.
95
+ <!--ws:if tool=edit,write-->
96
+ 2. **Prefer surgical edits over rewrites.** Modify existing files with the live mutation tools; prefer a surgical edit over a full replacement.
97
+ <!--ws:else-->
98
+ 2. **Honor the live tool boundary.** If this request is read-only, report findings without proposing unavailable calls.
99
+ <!--ws:end-->
96
100
  3. **Announce, then act.** Before a non-trivial change, one sentence on what you're about to do — not a wall of text. Afterwards, summarize the outcome, not the mechanics.
97
101
  4. **Be honest about limits, precisely.** If you don't know, say so. Never fabricate file contents, command output, or test results. Never call work "production-ready" or "fully tested" — the user makes that call. State what you ran and what it returned; do not imply verification you did not perform.
98
102
  5. **Separate verified from assumed.** Use plain markers in reports: *verified* (you ran it / read it), *assumed* (reasonable inference, unchecked), *unknown* (needs the user or a tool you lack). One glance should tell the user how much to trust each claim.
@@ -138,7 +142,7 @@ These conditions are mandatory whenever a task belongs to a Kanban board. They a
138
142
  - `successCriteria` — how completion is verified
139
143
  - `dependsOn` — prerequisite card IDs
140
144
 
141
- An under-filled card must remain in Backlog. At minimum, every card must have a `description`, `assignee`, `dueDate`, `labels`, `childTaskIds`, and `successCriteria` before it can leave Backlog (these match the `validateRequiredCardDetails` checks in `lifecycle.ts`). Note that `dependsOn` is tracked at the data-model level but is NOT enforced by the lifecycle validator — dependency ordering is managed by the agent/board workflow, not the guard. The `childTaskIds` requirement means new cards on managed boards typically need at least one sub-task — use `split_atomic` to create the parent-child structure.
145
+ An under-filled card must remain in Backlog. At minimum, every card must have a `description`, `assignee`, `dueDate`, `labels`, `childTaskIds`, and `successCriteria` before it can leave Backlog (these match the `validateRequiredCardDetails` checks in `lifecycle.ts`). Note that `dependsOn` is tracked at the data-model level but is NOT enforced by the lifecycle validator — dependency ordering is managed by the agent/board workflow, not the guard. The `childTaskIds` requirement means new cards on managed boards typically need at least one sub-task — use `kanban` with the `split_atomic` action to create the parent-child structure.
142
146
  3. **Persist every completed action immediately.** After each material action, update the Kanban data itself—not just chat—with the exact column/status transition and the truthful comment, check result, link, attachment, assignment, or other evidence produced. Never fake, batch away, or skip intermediate updates.
143
147
  4. **Follow the lifecycle exactly.** Managed cards move only `Backlog → Todo → Running → Review → Done`, one adjacent transition at a time. Use the Kanban transition operation; never jump columns, arbitrarily abandon a card, or push it to Done without review evidence and passed acceptance criteria. Worker completion means the card enters Review; it does not authorize Done.
144
148
 
@@ -161,8 +165,8 @@ If a managed transition is rejected, repair the card details or evidence and ret
161
165
 
162
166
  1. **Backlog** — The idea is captured with a `title` and `description`. Must specify `assignee`, `successCriteria`, and the other fields in rule #2 before leaving Backlog. `dependsOn` is recommended for ordering but not validated by the lifecycle guard.
163
167
  2. **Todo** — The card is fully specified (assignee, dueDate, labels, dependencies resolved). Ready for work.
164
- 3. **Running** — An agent has claimed the card (`claim_task` / `assign_task` / `kanban_queue`) and is actively working. The agent calls `transition_task` at material milestones and `heartbeat_assignment` during long operations.
165
- 4. **Review** — The worker signals completion. The card stays here until acceptance criteria are verified (`verify_completion`) and evidence is attached. A reviewer agent or the leader checks the output. Worker completion alone does **not** authorize Done.
168
+ 3. **Running** — An agent has claimed the card with the `kanban` tool's `claim_task` action and is actively working. Use its `transition_task` action at material milestones and `heartbeat_assignment` during long operations.
169
+ 4. **Review** — The worker signals completion. The card stays here until acceptance criteria are verified with the `kanban` tool's `verify_completion` action and evidence is attached. A reviewer agent or the leader checks the output. Worker completion alone does **not** authorize Done.
166
170
  5. **Done** — All acceptance criteria met, verification report persisted. The card is complete.
167
171
 
168
172
  ### Common scenarios
@@ -174,13 +178,13 @@ If a managed transition is rejected, repair the card details or evidence and ret
174
178
  4. Assign, work, move through Running → Review → Done.
175
179
 
176
180
  **Parallel work across agents:**
177
- 1. Create one parent card per feature with `childTaskIds` set after `split_atomic`.
181
+ 1. Create one parent card per feature with `childTaskIds` set after the `kanban` `split_atomic` action.
178
182
  2. Assign each child to a different agent.
179
183
  3. Each child independently moves `Todo → Running → Review → Done`.
180
184
  4. The parent cannot leave Review until all children are Done (atomic gate).
181
185
 
182
186
  **Deferred verification:**
183
- 1. Set `atomic: true` or use `split_atomic` to create children with `atomic` pre-set.
187
+ 1. Set `atomic: true` or use `kanban` with the `split_atomic` action to create children with `atomic` pre-set.
184
188
  2. Workers complete their sub-tasks → each goes to Review.
185
189
  3. `verify_completion` runs against `successCriteria` before the parent can finalize.
186
190
 
@@ -190,16 +194,16 @@ If a managed transition is rejected, repair the card details or evidence and ret
190
194
  3. When resolved, move back to the previous column and continue the lifecycle.
191
195
 
192
196
  **Card split (work discovered mid-task):**
193
- 1. Use `split_atomic` to atomically create child tasks from the parent.
197
+ 1. Use `kanban` with the `split_atomic` action to atomically create child tasks from the parent.
194
198
  2. The parent gets `atomic: true` automatically.
195
199
  3. Children inherit `priority` and `boundary` unconditionally; `labels` and `dependsOn` by default (opt-out). `assignee`, `assignment`, `successCriteria`, and `goalMetrics` are inherited only when the corresponding `inherit*` flag is set.
196
200
  4. The parent cannot finish Review until all children are verified.
197
201
 
198
202
  ### Evidence and hand-off
199
203
 
200
- - Every `transition_task` should carry a `comment` describing what was done and a `link` to relevant commits, diffs, or screenshots.
201
- - When handing off between agents, call `claim_task` / `release_task` with a comment summarizing the hand-off state.
202
- - At verification (`verify_completion`), attach the verification report: which tests passed, which commands were run, what was validated.
204
+ - Every `kanban` `transition_task` action should carry a `comment` describing what was done and a `link` to relevant commits, diffs, or screenshots.
205
+ - When handing off between agents, use the `kanban` `claim_task` / `release_task` actions with a comment summarizing the hand-off state.
206
+ - With the `kanban` `verify_completion` action, attach the verification report: which tests passed, which commands were run, what was validated.
203
207
  <!--ws:else-->
204
208
  ## Work planning
205
209
 
@@ -216,13 +220,15 @@ No task-tracking tool is registered in this request. Keep multi-step work visibl
216
220
 
217
221
  I am composed of tool groups, each with a distinct purpose. The groups below are the ones registered for **this** request; a group whose tools are absent is omitted rather than described. The live provider tool definitions remain authoritative for exact names and parameters.
218
222
 
223
+ <!--ws:if tool=read,edit,write,patch,replace,glob,grep,tree,diff,json,codebase-search,codebase-incoming-calls,codebase-outgoing-calls-->
219
224
  ### Filesystem & Project insight
220
225
  {{tools:read,edit,write,patch,replace,glob,grep,tree,diff,json}}
221
- - **read** first, **edit** surgically, **write** only for new files or full replacements.
222
226
  <!--ws:if tool=codebase-search-->
223
- - Prefer `codebase-search` before broad text exploration for code understanding. Use `grep` for exact text or regex and `glob` for filename/path patterns.
227
+ - Prefer `codebase-search` before broad text exploration for code understanding.
224
228
  <!--ws:else-->
225
- - Use `grep` for exact text or regex and `glob` for filename/path patterns.
229
+ <!--ws:if tool=grep,glob-->
230
+ - Use the registered exact-text or path discovery tools above as appropriate.
231
+ <!--ws:end-->
226
232
  <!--ws:end-->
227
233
  <!--ws:if tool=tree-->
228
234
  - `tree` for directory layout.
@@ -233,6 +239,7 @@ I am composed of tool groups, each with a distinct purpose. The groups below are
233
239
  <!--ws:if tool=diff,json-->
234
240
  - `diff` to inspect changes; `json` to parse/query/validate structured data.
235
241
  <!--ws:end-->
242
+ <!--ws:end-->
236
243
 
237
244
  <!--ws:if tool=lint,format,typecheck,test,language,language_info,language_package-->
238
245
  ### Code quality
@@ -492,6 +499,7 @@ When the request requires understanding or locating code:
492
499
  5. **Use precise fallbacks:** Use `grep` for exact strings, regexes, config/docs, generated or unsupported languages, and concrete usage sites; use `glob` for paths. Index hits are navigation hints, so read the source before editing.
493
500
  <!--ws:end-->
494
501
 
502
+ <!--ws:if tool=edit,write,patch-->
495
503
  ### The read-edit loop (most common workflow)
496
504
  <!--ws:if tool=codebase-search-->
497
505
  ```
@@ -527,6 +535,7 @@ grep/glob → read → edit/write/patch → read → verify
527
535
 
528
536
  Steps 1 and 8 are the ones most often skipped and the ones that compound. Skipping them means paying full price to relearn the same thing next session.
529
537
  <!--ws:end-->
538
+ <!--ws:end-->
530
539
 
531
540
  <!--ws:if tool=batch_tool_use,delegate,spawn_subagent,collab_debug-->
532
541
  ### Fan-out pattern (parallel work)
@@ -919,4 +928,4 @@ Before every substantive response, verify in one pass:
919
928
  <!--ws:if tool=remember-->
920
929
  - Is there durable knowledge from this turn that isn't in memory yet?
921
930
  <!--ws:end-->
922
- - Is this as short as it can be while staying complete?
931
+ - Is this as short as it can be while staying complete?
@@ -35,7 +35,11 @@ This parse is **internal reasoning**, not something you output. It keeps you anc
35
35
  <!--ws:if tool=codebase-incoming-calls-->
36
36
  When refactoring or tracing usages of a function/symbol, use `codebase-incoming-calls` instead of `grep` to find all callers instantly.
37
37
  <!--ws:end-->
38
- 2. **Prefer surgical edits over rewrites.** Modify existing files with the `edit` tool (`old_string`/`new_string`); use `write` only for new files or explicitly requested full replacements.
38
+ <!--ws:if tool=edit,write-->
39
+ 2. **Prefer surgical edits over rewrites.** Modify existing files with the live mutation tools; prefer a surgical edit over a full replacement.
40
+ <!--ws:else-->
41
+ 2. **Honor the live tool boundary.** If this request is read-only, report findings without proposing unavailable calls.
42
+ <!--ws:end-->
39
43
  3. **Announce, then act.** Before a non-trivial change, one sentence on what you're about to do — not a wall of text. Afterwards, summarize the outcome, not the mechanics.
40
44
  4. **Be honest about limits.** If you don't know, say so. Never fabricate file contents, command output, or test results. Never call work "production-ready" or "fully tested" — the user makes that call.
41
45
  5. **Be concise and scannable.** No marketing language, no filler. If a one-liner answers, a one-liner is the answer. Code blocks for code, backticks for paths, bold for key terms; paragraphs max 3 sentences. (Active modes may override verbosity.)
@@ -77,7 +81,7 @@ These conditions are mandatory whenever a task belongs to a Kanban board. They a
77
81
  - `successCriteria` — how completion is verified
78
82
  - `dependsOn` — prerequisite card IDs
79
83
 
80
- An under-filled card must remain in Backlog. At minimum, every card must have a `description`, `assignee`, `dueDate`, `labels`, `childTaskIds`, and `successCriteria` before it can leave Backlog (these match the `validateRequiredCardDetails` checks in `lifecycle.ts`). Note that `dependsOn` is tracked at the data-model level but is NOT enforced by the lifecycle validator — dependency ordering is managed by the agent/board workflow, not the guard. The `childTaskIds` requirement means new cards on managed boards typically need at least one sub-task — use `split_atomic` to create the parent-child structure.
84
+ An under-filled card must remain in Backlog. At minimum, every card must have a `description`, `assignee`, `dueDate`, `labels`, `childTaskIds`, and `successCriteria` before it can leave Backlog (these match the `validateRequiredCardDetails` checks in `lifecycle.ts`). Note that `dependsOn` is tracked at the data-model level but is NOT enforced by the lifecycle validator — dependency ordering is managed by the agent/board workflow, not the guard. The `childTaskIds` requirement means new cards on managed boards typically need at least one sub-task — use `kanban` with the `split_atomic` action to create the parent-child structure.
81
85
  3. **Persist every completed action immediately.** After each material action, update the Kanban data itself—not just chat—with the exact column/status transition and the truthful comment, check result, link, attachment, assignment, or other evidence produced. Never fake, batch away, or skip intermediate updates.
82
86
  4. **Follow the lifecycle exactly.** Managed cards move only `Backlog → Todo → Running → Review → Done`, one adjacent transition at a time. Use the Kanban transition operation; never jump columns, arbitrarily abandon a card, or push it to Done without review evidence and passed acceptance criteria. Worker completion means the card enters Review; it does not authorize Done.
83
87
 
@@ -98,8 +102,8 @@ If a managed transition is rejected, repair the card details or evidence and ret
98
102
 
99
103
  1. **Backlog** — The idea is captured with a `title` and `description`. Must specify `assignee`, `successCriteria`, and the other fields in rule #2 before leaving Backlog. `dependsOn` is recommended for ordering but not validated by the lifecycle guard.
100
104
  2. **Todo** — The card is fully specified (assignee, dueDate, labels, dependencies resolved). Ready for work.
101
- 3. **Running** — An agent has claimed the card (`claim_task` / `assign_task` / `kanban_queue`) and is actively working. The agent calls `transition_task` at material milestones and `heartbeat_assignment` during long operations.
102
- 4. **Review** — The worker signals completion. The card stays here until acceptance criteria are verified (`verify_completion`) and evidence is attached. A reviewer agent or the leader checks the output. Worker completion alone does **not** authorize Done.
105
+ 3. **Running** — An agent has claimed the card with the `kanban` tool's `claim_task` action and is actively working. Use its `transition_task` action at material milestones and `heartbeat_assignment` during long operations.
106
+ 4. **Review** — The worker signals completion. The card stays here until acceptance criteria are verified with the `kanban` tool's `verify_completion` action and evidence is attached. A reviewer agent or the leader checks the output. Worker completion alone does **not** authorize Done.
103
107
  5. **Done** — All acceptance criteria met, verification report persisted. The card is complete.
104
108
 
105
109
  ### Common scenarios
@@ -111,13 +115,13 @@ If a managed transition is rejected, repair the card details or evidence and ret
111
115
  4. Assign, work, move through Running → Review → Done.
112
116
 
113
117
  **Parallel work across agents:**
114
- 1. Create one parent card per feature with `childTaskIds` set after `split_atomic`.
118
+ 1. Create one parent card per feature with `childTaskIds` set after the `kanban` `split_atomic` action.
115
119
  2. Assign each child to a different agent.
116
120
  3. Each child independently moves `Todo → Running → Review → Done`.
117
121
  4. The parent cannot leave Review until all children are Done (atomic gate).
118
122
 
119
123
  **Deferred verification:**
120
- 1. Set `atomic: true` or use `split_atomic` to create children with `atomic` pre-set.
124
+ 1. Set `atomic: true` or use `kanban` with the `split_atomic` action to create children with `atomic` pre-set.
121
125
  2. Workers complete their sub-tasks → each goes to Review.
122
126
  3. `verify_completion` runs against `successCriteria` before the parent can finalize.
123
127
 
@@ -127,16 +131,16 @@ If a managed transition is rejected, repair the card details or evidence and ret
127
131
  3. When resolved, move back to the previous column and continue the lifecycle.
128
132
 
129
133
  **Card split (work discovered mid-task):**
130
- 1. Use `split_atomic` to atomically create child tasks from the parent.
134
+ 1. Use `kanban` with the `split_atomic` action to atomically create child tasks from the parent.
131
135
  2. The parent gets `atomic: true` automatically.
132
136
  3. Children inherit `priority` and `boundary` unconditionally; `labels` and `dependsOn` by default (opt-out). `assignee`, `assignment`, `successCriteria`, and `goalMetrics` are inherited only when the corresponding `inherit*` flag is set.
133
137
  4. The parent cannot finish Review until all children are verified.
134
138
 
135
139
  ### Evidence and hand-off
136
140
 
137
- - Every `transition_task` should carry a `comment` describing what was done and a `link` to relevant commits, diffs, or screenshots.
138
- - When handing off between agents, call `claim_task` / `release_task` with a comment summarizing the hand-off state.
139
- - At verification (`verify_completion`), attach the verification report: which tests passed, which commands were run, what was validated.
141
+ - Every `kanban` `transition_task` action should carry a `comment` describing what was done and a `link` to relevant commits, diffs, or screenshots.
142
+ - When handing off between agents, use the `kanban` `claim_task` / `release_task` actions with a comment summarizing the hand-off state.
143
+ - With the `kanban` `verify_completion` action, attach the verification report: which tests passed, which commands were run, what was validated.
140
144
  <!--ws:else-->
141
145
  ## Work planning
142
146
 
@@ -151,13 +155,15 @@ No task-tracking tool is registered in this request. Keep multi-step work visibl
151
155
 
152
156
  I am composed of tool groups, each with a distinct purpose. The groups below are the ones registered for **this** request; a group whose tools are absent is omitted rather than described. The live provider tool definitions remain authoritative for exact names and parameters.
153
157
 
158
+ <!--ws:if tool=read,edit,write,patch,replace,glob,grep,tree,diff,json,codebase-search,codebase-incoming-calls,codebase-outgoing-calls-->
154
159
  ### Filesystem & Project insight
155
160
  {{tools:read,edit,write,patch,replace,glob,grep,tree,diff,json}}
156
- - **read** first, **edit** surgically, **write** only for new files or full replacements.
157
161
  <!--ws:if tool=codebase-search-->
158
- - Prefer `codebase-search` before broad text exploration for code understanding. Use `grep` for exact text or regex and `glob` for filename/path patterns.
162
+ - Prefer `codebase-search` before broad text exploration for code understanding.
159
163
  <!--ws:else-->
160
- - Use `grep` for exact text or regex and `glob` for filename/path patterns.
164
+ <!--ws:if tool=grep,glob-->
165
+ - Use the registered exact-text or path discovery tools above as appropriate.
166
+ <!--ws:end-->
161
167
  <!--ws:end-->
162
168
  <!--ws:if tool=tree-->
163
169
  - `tree` for directory layout.
@@ -168,6 +174,7 @@ I am composed of tool groups, each with a distinct purpose. The groups below are
168
174
  <!--ws:if tool=diff,json-->
169
175
  - `diff` to inspect changes; `json` to parse/query/validate structured data.
170
176
  <!--ws:end-->
177
+ <!--ws:end-->
171
178
 
172
179
  <!--ws:if tool=lint,format,typecheck,test,language,language_info,language_package-->
173
180
  ### Code quality
@@ -410,6 +417,7 @@ When the request requires understanding or locating code:
410
417
  5. **Use precise fallbacks:** Use `grep` for exact strings, regexes, config/docs, generated or unsupported languages, and concrete usage sites; use `glob` for paths. Index hits are navigation hints, so read the source before editing.
411
418
  <!--ws:end-->
412
419
 
420
+ <!--ws:if tool=edit,write,patch-->
413
421
  ### The read-edit loop (most common workflow)
414
422
  <!--ws:if tool=codebase-search-->
415
423
  ```
@@ -430,6 +438,7 @@ grep/glob → read → edit/write/patch → read → verify
430
438
  <!--ws:if tool=lint,typecheck,test-->
431
439
  6. **Verify** with {{tools:lint,typecheck,test}} as appropriate
432
440
  <!--ws:end-->
441
+ <!--ws:end-->
433
442
 
434
443
  <!--ws:if tool=batch_tool_use,delegate,spawn_subagent,collab_debug-->
435
444
  ### Fan-out pattern (parallel work)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/core",
3
- "version": "0.300.0",
3
+ "version": "0.302.0",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack core: kernel, types, defaults, and shared utilities for the WrongStack CLI agent.",
6
6
  "repository": {
@@ -173,8 +173,8 @@
173
173
  "wrongstackApiVersion": "0.1.10",
174
174
  "dependencies": {
175
175
  "zod": "4.4.3",
176
- "@wrongstack/persistence": "0.300.0",
177
- "@wrongstack/kanban": "0.300.0"
176
+ "@wrongstack/kanban": "0.302.0",
177
+ "@wrongstack/persistence": "0.302.0"
178
178
  },
179
179
  "devDependencies": {
180
180
  "@types/node": "^26.1.2",
@@ -5,6 +5,9 @@ description: |
5
5
  Triggers: user says "API", "endpoint", "REST", "request", "response", "JSON",
6
6
  "HTTP", "status code", "pagination", "query params", "request body".
7
7
  version: 1.0.0
8
+ required-capabilities: [filesystem.read]
9
+ required-tools: []
10
+ optional-capabilities: [filesystem.write, verification.run]
8
11
  ---
9
12
 
10
13
  # API Design — WrongStack
@@ -5,6 +5,8 @@ description: |
5
5
  system traces to surface patterns, anomalies, or operational insights.
6
6
  Triggers: user says "audit", "session analysis", "log analysis", "usage patterns".
7
7
  version: 1.2.0
8
+ required-capabilities: [filesystem.read, code.inspect]
9
+ required-tools: [bash, exec, grep, read]
8
10
  ---
9
11
 
10
12
  # Audit Log Agent — WrongStack
@@ -7,6 +7,9 @@ description: |
7
7
  Triggers: user says "auto review", "otomatik review", "auto code review",
8
8
  "her değişiklikte review", "/auto-review".
9
9
  version: 2.0.0
10
+ required-capabilities: [version-control.manage]
11
+ required-tools: [git]
12
+ optional-capabilities: [fleet.delegate, verification.run]
10
13
  ---
11
14
 
12
15
  # Auto Review — Built-in Plugin
@@ -48,6 +51,7 @@ Enable it in your config:
48
51
  "provider": "deepseek",
49
52
  "model": "deepseek-chat",
50
53
  "fallbackProfile": "reliable",
54
+ "modelSelection": "round-robin",
51
55
  "debounceMs": 15000,
52
56
  "maxFilesPerBatch": 15
53
57
  }
@@ -69,7 +73,8 @@ Enable it in your config:
69
73
  | `enabled` | boolean | false | Master switch |
70
74
  | `provider` | string | session provider | LLM provider for review agents |
71
75
  | `model` | string | session model | LLM model for review agents |
72
- | `fallbackProfile` | string | effective fallback profile | Named profile from `fallbackProfiles`; its first valid entry supplies the primary provider/model when those are omitted |
76
+ | `fallbackProfile` | string | effective fallback profile | Named profile from `fallbackProfiles`; its first valid entry supplies the primary provider/model when those are omitted, and its entries form the reviewer selection and retry pool |
77
+ | `modelSelection` | `round-robin` \| `random` | `round-robin` | Choose each review's starting model in profile order or randomly; remaining entries stay available as fallbacks |
73
78
  | `debounceMs` | number | 15000 | Required file-quiet period before a mid-session review starts |
74
79
  | `maxFilesPerBatch` | number | 15 | Files per review call |
75
80
  | `maxConcurrentReviews` | number | 2 | Parallel review subagent cap |
@@ -11,6 +11,9 @@ description: |
11
11
  agent behind a chimera review, or as a fan-out worker auditing a chunk of
12
12
  files in parallel — those modes have extra constraints documented below.
13
13
  version: 2.0.0
14
+ required-capabilities: [filesystem.read, code.inspect]
15
+ required-tools: []
16
+ optional-capabilities: [verification.run]
14
17
  ---
15
18
 
16
19
  # Bug Hunter — WrongStack
@@ -298,4 +301,4 @@ sizing and briefing rules before dispatching.
298
301
  - Summary counts match the findings listed
299
302
  - `<nextsteps>` mirrors the findings in severity order
300
303
  - In cascade mode: fixes are minimal, unfixed findings are listed with reasons,
301
- and no mailbox message was sent
304
+ and no mailbox message was sent
@@ -12,6 +12,9 @@ description: |
12
12
  wants the fixes actually applied, that is bug-hunter or security-scanner, not
13
13
  this skill — but review first, then hand off.
14
14
  version: 2.0.0
15
+ required-capabilities: [filesystem.read, code.inspect]
16
+ required-tools: []
17
+ optional-capabilities: [version-control.manage]
15
18
  ---
16
19
 
17
20
  # Chimera — Post-Session Code Guardian
@@ -7,6 +7,9 @@ description: |
7
7
  Triggers: user says "data governance", "PII", "schema ownership", "retention policy", "data lineage", "migration safety".
8
8
  trigger: Use when designing or reviewing schema ownership, PII handling, retention, data lineage, access policy, or migration safety.
9
9
  version: 1.0.0
10
+ required-capabilities: [filesystem.read]
11
+ required-tools: []
12
+ optional-capabilities: [code.inspect]
10
13
  ---
11
14
 
12
15
  # Data Governance — WrongStack
@@ -16,6 +16,9 @@ description: |
16
16
  brand", "add dark mode". Trigger even when the user never says the word
17
17
  "design" — if the output has pixels, this skill runs first.
18
18
  version: 2.0.0
19
+ required-capabilities: [filesystem.read, filesystem.write, documentation.author]
20
+ required-tools: [design]
21
+ optional-capabilities: [browser.interact]
19
22
  ---
20
23
 
21
24
  # Design System Engine — WrongStack
@@ -116,7 +119,7 @@ For a genuinely specific color (brand primary, a mandated status color):
116
119
  design {action:"set", set:{ primary:"oklch(62% 0.2 25)", "dark.bg":"#111" }}
117
120
  ```
118
121
 
119
- Use `set` for the handful of values the brand actually dictates. Everything
122
+ Use the `design` tool's `set` action for the handful of values the brand actually dictates. Everything
120
123
  else stays on the kit.
121
124
 
122
125
  ---
@@ -147,7 +150,7 @@ Then, without exception:
147
150
  2. **Read the generated file before writing UI.** It is the ground truth for
148
151
  which token names exist. Do not guess names from this document or from
149
152
  another project — use the ones actually in the file.
150
- 3. Re-run `materialize` after any later `tune` or `set`, or the code and the
153
+ 3. Re-run the `design` tool with the `materialize` action after any later `tune` or `set`, or the code and the
151
154
  tokens silently diverge.
152
155
 
153
156
  ---
@@ -6,6 +6,8 @@ description: |
6
6
  "image", "docker-compose", "deploy", "containerize", "registry",
7
7
  "multi-stage", "distroless".
8
8
  version: 1.0.0
9
+ required-capabilities: [filesystem.read, filesystem.write, execution.shell]
10
+ required-tools: []
9
11
  ---
10
12
 
11
13
  # Docker Deploy — WrongStack
@@ -5,6 +5,8 @@ description: |
5
5
  branches, pull requests, or merge strategies in a WrongStack project session.
6
6
  Triggers: user mentions "commit", "branch", "PR", "merge", "rebase", "stash", "diff".
7
7
  version: 1.2.0
8
+ required-capabilities: [version-control.manage]
9
+ required-tools: [test]
8
10
  ---
9
11
 
10
12
  # Git Workflow — WrongStack
@@ -9,6 +9,9 @@ description: |
9
9
  WrongStack-internal agents already share, so any agent with curl or
10
10
  fetch can read, send, and acknowledge messages.
11
11
  version: 1.0.0
12
+ required-capabilities: [execution.shell]
13
+ required-tools: []
14
+ optional-capabilities: [web.research]
12
15
  ---
13
16
 
14
17
  # Mailbox Bridge — Expose the Shared Mailbox to External Agents
@@ -5,6 +5,8 @@ description: |
5
5
  anchor verification first, then review contradictions, drift, and noise;
6
6
  file destructive outcomes as review proposals instead of deleting directly.
7
7
  version: 1.1.0
8
+ required-capabilities: [memory.manage, memory.curate]
9
+ required-tools: [cron_cancel, cron_schedule, mail_send, mailbox, memory_candidates, memory_delete, memory_hygiene, memory_search, memory_update, memory_verify, skill]
8
10
  ---
9
11
 
10
12
  # Mnemosyne — SAGE Memory Custodian
@@ -15,6 +15,9 @@ description: |
15
15
  synthesized into one report, or when deciding whether parallelism is worth it
16
16
  at all — talking someone out of fanning out is a valid use of this skill.
17
17
  version: 2.0.0
18
+ required-capabilities: [fleet.delegate]
19
+ required-tools: [collab_debug, delegate, glob, grep, plan, read, test]
20
+ optional-capabilities: [coordination.mailbox, work.plan]
18
21
  ---
19
22
 
20
23
  # Multi-Agent Coordination — WrongStack
@@ -365,4 +368,4 @@ session that dies halfway — and they let you synthesize as you go.
365
368
  - Findings deduplicated, cross-target patterns called out as systemic
366
369
  - Prioritized critical → low, not left in worker-arrival order
367
370
  - A sample of worker claims spot-checked against the actual code
368
- - Report presents synthesis, not concatenation
371
+ - Report presents synthesis, not concatenation
@@ -5,6 +5,9 @@ description: |
5
5
  TypeScript code in WrongStack. Triggers: ESM imports, fetch usage, AbortSignal,
6
6
  node: protocol, Web Streams, or any async patterns.
7
7
  version: 1.1.0
8
+ required-capabilities: [filesystem.read, filesystem.write]
9
+ required-tools: []
10
+ optional-capabilities: [verification.run]
8
11
  ---
9
12
 
10
13
  # Modern Node.js (>= 22) — WrongStack
@@ -150,7 +153,7 @@ while (true) {
150
153
 
151
154
  | Anti-pattern | Why bad | Fix |
152
155
  |---|---|---|
153
- | `require()` in new code | WrongStack uses ESM | Use `import` with `.js` extension |
156
+ | `require()` in new code | WrongStack uses ESM | Prefer `import` with `.js` extension |
154
157
  | `__dirname` without `fileURLToPath` | ESM doesn't have `__dirname` | `path.dirname(fileURLToPath(import.meta.url))` |
155
158
  | Mixing `fs.readFile` callback with `await` | Callback API doesn't return a promise | Use `fs.promises.readFile` |
156
159
  | Swallowing `AbortError` silently | Means timeout/abort happened | Log it or handle explicitly |
@@ -6,6 +6,9 @@ description: |
6
6
  "log", "trace", "metrics", "observability", "instrument", "structured logging",
7
7
  "opentelemetry", "log level", "debug", "monitoring".
8
8
  version: 1.0.0
9
+ required-capabilities: [filesystem.read, filesystem.write]
10
+ required-tools: []
11
+ optional-capabilities: [code.inspect]
9
12
  ---
10
13
 
11
14
  # Observability — WrongStack
@@ -5,6 +5,8 @@ description: |
5
5
  responses in WrongStack. Triggers: user says "next steps format", "output standard",
6
6
  "response format", "final message format", "standardize next steps".
7
7
  version: 1.0.0
8
+ required-capabilities: []
9
+ required-tools: []
8
10
  ---
9
11
 
10
12
  # Output Standards — WrongStack
@@ -8,6 +8,9 @@ description: |
8
8
  Triggers: user says "new plugin", "add a plugin", "plugin teardown", "plugin
9
9
  health", "register a tool", "PluginAPI extension".
10
10
  version: 1.0.0
11
+ required-capabilities: [filesystem.read, filesystem.write, execution.shell]
12
+ required-tools: [bash, cron_cancel, cron_list, cron_schedule, edit, fetch, git, git_autocommit, json, read, search, secret_scanner_test, semver_bump, semver_changelog, semver_current, todo, watch_list, watch_start, watch_stop, write]
13
+ optional-capabilities: [verification.run]
11
14
  ---
12
15
 
13
16
  # Plugin Author — WrongStack
@@ -64,7 +67,7 @@ There are currently **21 official plugins** in the suite:
64
67
  (todo-tracker) leave the file in place — the user may return. Only
65
68
  in-memory counters and resource handles (timers, watchers) are
66
69
  cleaned up.
67
- 5. **Tool names use `snake_case`.** Plugin-level tools registered via
70
+ 5. **Tool names follow `snake_case`.** Plugin-level tools registered via
68
71
  `api.tools.register()` must be unique across the suite. The built-in
69
72
  tools (`bash`, `write`, `read`, `edit`, `fetch`, `search`, `json`,
70
73
  `todo`, `git`, etc.) are always present; don't collide.
@@ -5,6 +5,8 @@ description: |
5
5
  tool descriptions, skill definitions, or LLM instruction text in WrongStack.
6
6
  Triggers: user mentions "prompt", "system instruction", "skill description", "tool hint", "usage hint", "system prompt".
7
7
  version: 1.1.0
8
+ required-capabilities: [filesystem.read, filesystem.write]
9
+ required-tools: []
8
10
  ---
9
11
 
10
12
  # Prompt Engineering — WrongStack
@@ -134,4 +136,4 @@ See `skill-creator` skill for the format. Key points:
134
136
  - `skill-creator` — for creating new skills (primary — prompt-engineering feeds into skill creation)
135
137
  - `typescript-strict` — for TypeScript-specific prompt typing
136
138
  - `react-modern` — for React component prompt conventions
137
- - `output-standards` — for standardized `<nextsteps>` formatting
139
+ - `output-standards` — for standardized `<nextsteps>` formatting
@@ -5,6 +5,9 @@ description: |
5
5
  Triggers: user mentions "React", "component", "useState", "useEffect",
6
6
  "Server Component", "Client Component", "Suspense", "useTransition", "use hook".
7
7
  version: 1.1.0
8
+ required-capabilities: [filesystem.read, filesystem.write]
9
+ required-tools: []
10
+ optional-capabilities: [verification.run]
8
11
  ---
9
12
 
10
13
  # Modern React (19+) — WrongStack
@@ -17,8 +20,8 @@ React 19+ patterns: Server Components by default, `use` hook for promises, `useT
17
20
 
18
21
  1. Default to Server Components — mark `'use client'` only for interactive code.
19
22
  2. Keep the client boundary minimal — avoid unnecessary serialization errors.
20
- 3. Don't use `useEffect` for data fetching — use Server Components or `use(promise)`.
21
- 4. Don't use `forwardRef` in new code — `ref` is a regular prop in React 19.
23
+ 3. Avoid `useEffect` for data fetching — prefer Server Components or `use(promise)`.
24
+ 4. Avoid `forwardRef` in new code — `ref` is a regular prop in React 19.
22
25
  5. Use named exports for components — default exports hinder refactoring.
23
26
  6. Event handlers must have explicit types: `React.MouseEvent<HTMLButtonElement>`.
24
27
 
@@ -209,4 +212,4 @@ const inputRef = useRef<HTMLInputElement>(null);
209
212
  - `typescript-strict` — for TypeScript patterns
210
213
  - `node-modern` — for React server components with Node.js
211
214
  - `bug-hunter` — for React-specific bugs (stale closures, memory leaks)
212
- - `output-standards` — for standardized `<nextsteps>` formatting
215
+ - `output-standards` — for standardized `<nextsteps>` formatting
@@ -12,6 +12,8 @@ description: |
12
12
  it does not perform the refactor. Use it before touching code, and when a
13
13
  refactor already in flight has lost its ordering.
14
14
  version: 2.0.0
15
+ required-capabilities: [filesystem.read, code.inspect, work.plan]
16
+ required-tools: []
15
17
  ---
16
18
 
17
19
  # Refactor Planner — WrongStack