clikit-plugin 0.2.45 → 0.2.46

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 (177) hide show
  1. package/AGENTS.md +69 -3
  2. package/README.md +128 -92
  3. package/command/commit.md +1 -1
  4. package/command/create.md +65 -8
  5. package/command/debug.md +1 -1
  6. package/command/design.md +183 -43
  7. package/command/handoff.md +1 -1
  8. package/command/import-plan.md +2 -2
  9. package/command/init.md +1 -1
  10. package/command/issue.md +3 -4
  11. package/command/pr.md +1 -1
  12. package/command/research.md +5 -7
  13. package/command/resume.md +1 -1
  14. package/command/ship.md +29 -32
  15. package/command/start.md +38 -27
  16. package/command/{status-beads.md → status.md} +2 -3
  17. package/command/verify.md +132 -48
  18. package/dist/.tsbuildinfo +1 -1
  19. package/dist/agents/index.d.ts +0 -0
  20. package/dist/agents/index.d.ts.map +0 -0
  21. package/dist/beads-context.test.d.ts +2 -0
  22. package/dist/beads-context.test.d.ts.map +1 -0
  23. package/dist/cli.d.ts +0 -0
  24. package/dist/cli.d.ts.map +0 -0
  25. package/dist/cli.js +5 -0
  26. package/dist/cli.test.d.ts +0 -0
  27. package/dist/cli.test.d.ts.map +0 -0
  28. package/dist/clikit.schema.json +32 -11
  29. package/dist/clilog.test.d.ts +0 -0
  30. package/dist/clilog.test.d.ts.map +0 -0
  31. package/dist/commands/index.d.ts +0 -0
  32. package/dist/commands/index.d.ts.map +0 -0
  33. package/dist/config.d.ts +15 -7
  34. package/dist/config.d.ts.map +1 -1
  35. package/dist/config.test.d.ts +0 -0
  36. package/dist/config.test.d.ts.map +0 -0
  37. package/dist/hooks/beads-context.d.ts +2 -0
  38. package/dist/hooks/beads-context.d.ts.map +1 -1
  39. package/dist/hooks/empty-message-sanitizer.d.ts +0 -0
  40. package/dist/hooks/empty-message-sanitizer.d.ts.map +0 -0
  41. package/dist/hooks/error-logger.d.ts +0 -0
  42. package/dist/hooks/error-logger.d.ts.map +0 -0
  43. package/dist/hooks/git-guard.d.ts +0 -0
  44. package/dist/hooks/git-guard.d.ts.map +0 -0
  45. package/dist/hooks/index.d.ts +0 -2
  46. package/dist/hooks/index.d.ts.map +1 -1
  47. package/dist/hooks/memory-digest.d.ts +1 -0
  48. package/dist/hooks/memory-digest.d.ts.map +1 -1
  49. package/dist/hooks/security-check.d.ts +0 -0
  50. package/dist/hooks/security-check.d.ts.map +0 -0
  51. package/dist/hooks/subagent-question-blocker.d.ts +0 -0
  52. package/dist/hooks/subagent-question-blocker.d.ts.map +0 -0
  53. package/dist/hooks/todo-beads-sync.d.ts +1 -0
  54. package/dist/hooks/todo-beads-sync.d.ts.map +1 -1
  55. package/dist/hooks/todo-enforcer.d.ts +1 -1
  56. package/dist/hooks/todo-enforcer.d.ts.map +1 -1
  57. package/dist/hooks/truncator.d.ts +0 -0
  58. package/dist/hooks/truncator.d.ts.map +0 -0
  59. package/dist/index.d.ts +0 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +250 -576
  62. package/dist/skills/index.d.ts +0 -0
  63. package/dist/skills/index.d.ts.map +0 -0
  64. package/dist/tools/cass-memory.d.ts +0 -0
  65. package/dist/tools/cass-memory.d.ts.map +0 -0
  66. package/dist/tools/context-summary.d.ts +0 -0
  67. package/dist/tools/context-summary.d.ts.map +0 -0
  68. package/dist/tools/index.d.ts +0 -3
  69. package/dist/tools/index.d.ts.map +1 -1
  70. package/dist/tools/memory-db.d.ts +0 -0
  71. package/dist/tools/memory-db.d.ts.map +0 -0
  72. package/dist/tools/memory.d.ts +0 -0
  73. package/dist/tools/memory.d.ts.map +0 -0
  74. package/dist/tools/observation.d.ts +0 -0
  75. package/dist/tools/observation.d.ts.map +0 -0
  76. package/dist/types.d.ts +0 -0
  77. package/dist/types.d.ts.map +0 -0
  78. package/memory/_digest.md +1 -1
  79. package/memory/_templates/handoff.md +0 -0
  80. package/memory/_templates/plan.md +35 -0
  81. package/memory/_templates/prd.md +0 -0
  82. package/memory/_templates/research.md +0 -0
  83. package/memory/_templates/review.md +0 -0
  84. package/memory/_templates/spec.md +12 -0
  85. package/memory/beads/.gitkeep +0 -0
  86. package/memory/handoffs/.gitkeep +0 -0
  87. package/memory/memory.db +0 -0
  88. package/memory/plans/.gitkeep +0 -0
  89. package/memory/prds/.gitkeep +0 -0
  90. package/memory/research/.gitkeep +0 -0
  91. package/memory/reviews/.gitkeep +0 -0
  92. package/memory/specs/.gitkeep +0 -0
  93. package/package.json +4 -4
  94. package/skill/beads/SKILL.md +42 -43
  95. package/skill/beads/mcp.json +26 -0
  96. package/skill/beads/references/api-reference.md +64 -0
  97. package/skill/chrome-devtools/SKILL.md +22 -23
  98. package/skill/chrome-devtools/mcp.json +17 -0
  99. package/skill/chrome-devtools/references/tool-reference.md +63 -0
  100. package/skill/condition-based-waiting/SKILL.md +28 -66
  101. package/skill/deep-research/SKILL.md +34 -103
  102. package/skill/deep-research/mcp.json +21 -0
  103. package/skill/deep-research/references/lsp-ops.md +44 -0
  104. package/skill/defense-in-depth/SKILL.md +29 -69
  105. package/skill/executing-plans/SKILL.md +25 -34
  106. package/skill/finishing-a-development-branch/SKILL.md +28 -89
  107. package/skill/playwright/SKILL.md +27 -22
  108. package/skill/playwright/mcp.json +20 -0
  109. package/skill/playwright/references/tool-reference.md +64 -0
  110. package/skill/receiving-code-review/SKILL.md +16 -27
  111. package/skill/requesting-code-review/SKILL.md +22 -26
  112. package/skill/ritual-workflow/SKILL.md +22 -82
  113. package/skill/root-cause-tracing/SKILL.md +30 -54
  114. package/skill/session-management/SKILL.md +21 -40
  115. package/skill/source-code-research/SKILL.md +33 -102
  116. package/skill/source-code-research/mcp.json +13 -0
  117. package/skill/source-code-research/references/quick-ref.md +65 -0
  118. package/skill/systematic-debugging/SKILL.md +28 -41
  119. package/skill/systematic-debugging/references/patterns.md +71 -0
  120. package/skill/test-driven-development/SKILL.md +16 -40
  121. package/skill/testing-anti-patterns/SKILL.md +36 -64
  122. package/skill/testing-anti-patterns/references/decision-matrix.md +55 -0
  123. package/skill/using-git-worktrees/SKILL.md +27 -103
  124. package/skill/vercel-react-best-practices/SKILL.md +50 -139
  125. package/skill/vercel-react-best-practices/references/patterns.md +70 -0
  126. package/skill/verification-before-completion/SKILL.md +19 -37
  127. package/skill/writing-plans/SKILL.md +20 -32
  128. package/skill/writing-skills/SKILL.md +52 -41
  129. package/skill/writing-skills/references/skill-anatomy.md +210 -0
  130. package/src/agents/AGENTS.md +48 -18
  131. package/src/agents/build.md +342 -93
  132. package/src/agents/explore.md +77 -60
  133. package/src/agents/index.ts +0 -0
  134. package/src/agents/oracle.md +153 -63
  135. package/src/agents/plan.md +275 -110
  136. package/src/agents/research.md +71 -53
  137. package/src/agents/review.md +182 -61
  138. package/src/agents/vision.md +7 -5
  139. package/command/plan.md +0 -152
  140. package/command/review-codebase.md +0 -228
  141. package/command/review.md +0 -135
  142. package/command/vision.md +0 -210
  143. package/dist/hooks/swarm-enforcer.d.ts +0 -31
  144. package/dist/hooks/swarm-enforcer.d.ts.map +0 -1
  145. package/dist/tools/beads-memory-sync.d.ts +0 -17
  146. package/dist/tools/beads-memory-sync.d.ts.map +0 -1
  147. package/dist/tools/quick-research.d.ts +0 -16
  148. package/dist/tools/quick-research.d.ts.map +0 -1
  149. package/dist/tools/swarm.d.ts +0 -57
  150. package/dist/tools/swarm.d.ts.map +0 -1
  151. package/skill/accessibility-audit/SKILL.md +0 -115
  152. package/skill/beads-bridge/SKILL.md +0 -45
  153. package/skill/brainstorming/SKILL.md +0 -41
  154. package/skill/cass-village/SKILL.md +0 -217
  155. package/skill/cloudflare/SKILL.md +0 -96
  156. package/skill/design-system-audit/SKILL.md +0 -136
  157. package/skill/development-lifecycle/SKILL.md +0 -58
  158. package/skill/dispatching-parallel-agents/SKILL.md +0 -94
  159. package/skill/figma/SKILL.md +0 -34
  160. package/skill/frontend-aesthetics/SKILL.md +0 -63
  161. package/skill/gemini-large-context/SKILL.md +0 -80
  162. package/skill/mockup-to-code/SKILL.md +0 -98
  163. package/skill/mqdh/SKILL.md +0 -54
  164. package/skill/notebooklm/SKILL.md +0 -71
  165. package/skill/playwriter/SKILL.md +0 -56
  166. package/skill/polar/SKILL.md +0 -39
  167. package/skill/resend/SKILL.md +0 -85
  168. package/skill/sharing-skills/SKILL.md +0 -50
  169. package/skill/subagent-driven-development/SKILL.md +0 -69
  170. package/skill/supabase/SKILL.md +0 -80
  171. package/skill/supabase-postgres-best-practices/SKILL.md +0 -168
  172. package/skill/swarm-coordination/SKILL.md +0 -54
  173. package/skill/testing-skills-with-subagents/SKILL.md +0 -102
  174. package/skill/ui-ux-research/SKILL.md +0 -93
  175. package/skill/v0/SKILL.md +0 -67
  176. package/skill/v1-run/SKILL.md +0 -85
  177. package/skill/visual-analysis/SKILL.md +0 -113
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,8 +1,5 @@
1
1
  export { memoryRead, memorySearch, memoryGet, memoryTimeline, memoryUpdate, memoryAdmin, type MemorySearchParams, type MemorySearchResult, type MemoryObservation, type MemoryUpdateParams, type MemoryTimelineParams, type MemoryAdminParams, type MemoryAdminResult, } from "./memory";
2
2
  export { createObservation, getObservationsByType, getObservationsByBead, linkObservations, type ObservationParams, type ObservationResult, } from "./observation";
3
- export { swarm, type SwarmParams, type SwarmTask, type SwarmResult, type SwarmPlanResult, type SwarmMonitorResult, type SwarmDelegateResult, type SwarmAbortResult, } from "./swarm";
4
- export { beadsMemorySync, type BeadsMemorySyncParams, type BeadsMemorySyncResult, } from "./beads-memory-sync";
5
- export { quickResearch, type QuickResearchParams, type QuickResearchResult, } from "./quick-research";
6
3
  export { contextSummary, type ContextSummaryParams, type ContextSummaryResult, } from "./context-summary";
7
4
  export { cassMemoryContext, cassMemoryMark, cassMemoryReflect, cassMemoryDoctor, cassMemoryOutcome, cassIsAvailable, cassResetCache, type CassMemoryContextParams, type CassMemoryMarkParams, type CassMemoryReflectParams, type CassMemoryOutcomeParams, type CassMemoryDoctorParams, type CassMemoryExecOptions, type CassMemoryResult, } from "./cass-memory";
8
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/types.d.ts CHANGED
File without changes
File without changes
package/memory/_digest.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memory Digest
2
2
 
3
- > Auto-generated on 2026-02-26. Read-only reference for agents.
3
+ > Auto-generated on 2026-03-17. Read-only reference for agents.
4
4
  > Source: `.opencode/memory/memory.db`
5
5
 
6
6
  *No observations found in memory database.*
File without changes
@@ -77,6 +77,22 @@ Use this template when creating implementation plans.
77
77
  **Boundaries:**
78
78
  - [What NOT to do]
79
79
 
80
+ **Task Packet:**
81
+ - **packet_id:** P-T-001
82
+ - **goal:** [Single executable concern]
83
+ - **files_in_scope:**
84
+ - create: [`path/to/new-file.ts`]
85
+ - modify: [`path/to/existing.ts`]
86
+ - delete: []
87
+ - **verification_commands:**
88
+ - `bun run typecheck`
89
+ - `bun test path/to/test.ts`
90
+ - **risks:**
91
+ - [Top risk for this packet]
92
+ - **escalate_if:**
93
+ - [Verification fails twice]
94
+ - [A file outside scope must be edited]
95
+
80
96
  ---
81
97
 
82
98
  ### Task 2: [Title]
@@ -98,6 +114,17 @@ Use this template when creating implementation plans.
98
114
 
99
115
  ---
100
116
 
117
+ ## Execution Model
118
+
119
+ - Workflow quick mode: `/create → /start → /ship → /verify`
120
+ - Workflow deep mode: `/create → /research → /design → /start → /ship → /verify`
121
+ - Execution unit: **Task Packet**
122
+ - Source of truth: **Beads**
123
+ - `/start`: execute + per-packet verify loop
124
+ - `/verify`: pre-ship gate (all 4 checks, SHIP_READY verdict required before `/ship`)
125
+
126
+ ---
127
+
101
128
  ## Dependencies
102
129
 
103
130
  ```mermaid
@@ -134,6 +161,14 @@ graph TD
134
161
  Tasks eligible for Quick Mode (no full plan needed):
135
162
  - [ ] T-001 (S, ≤3 files, no security/db/api)
136
163
 
164
+ ## Packet Checklist
165
+
166
+ - [ ] Every task has a packet_id
167
+ - [ ] Every packet stays within 1–3 files
168
+ - [ ] Every packet has executable verification commands
169
+ - [ ] Every packet has an escalate_if clause
170
+ - [ ] File Impact matches all packet scopes
171
+
137
172
  ---
138
173
 
139
174
  ## Rollout Plan
File without changes
File without changes
File without changes
@@ -92,6 +92,12 @@ Use this template when creating specifications.
92
92
  | AC-01 | [Criteria] | [How to verify] |
93
93
  | AC-02 | [Criteria] | [How to verify] |
94
94
 
95
+ ### Execution Notes
96
+ - Preferred workflow mode: `compressed`
97
+ - Expected execution unit: **Task Packet**
98
+ - Beads issue/task is the live execution state
99
+ - Manual-only verification is not allowed unless explicitly marked as follow-up
100
+
95
101
  ---
96
102
 
97
103
  ## Assumptions
@@ -107,6 +113,12 @@ Use this template when creating specifications.
107
113
  - [ ] [Question 1]
108
114
  - [ ] [Question 2]
109
115
 
116
+ ## Planning Handoff Hints
117
+
118
+ - Likely files in scope: [candidate files/directories]
119
+ - Likely packet boundaries: [how the work should split into 1–3 file packets]
120
+ - Escalate if: [conditions that should trigger re-plan or Oracle]
121
+
110
122
  ---
111
123
 
112
124
  ## References
File without changes
File without changes
package/memory/memory.db CHANGED
Binary file
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "clikit-plugin",
3
- "version": "0.2.45",
4
- "description": "OpenCode plugin with 7 agents, 19 commands, 48 skills, 10 hooks",
3
+ "version": "0.2.46",
4
+ "description": "OpenCode plugin 7 agents, 15 commands, 22 skills, 10 hooks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -56,7 +56,7 @@
56
56
  },
57
57
  "homepage": "https://github.com/KiraKas-Tr/CliKit#readme",
58
58
  "dependencies": {
59
- "@opencode-ai/plugin": "1.2.15",
59
+ "@opencode-ai/plugin": "1.2.25",
60
60
  "gray-matter": "^4.0.3"
61
61
  },
62
62
  "devDependencies": {
@@ -67,4 +67,4 @@
67
67
  "peerDependencies": {
68
68
  "bun": ">=1.0.0"
69
69
  }
70
- }
70
+ }
@@ -1,56 +1,55 @@
1
1
  ---
2
2
  name: beads
3
- description: Use for multi-agent task coordination, file locking, and dependency management via beads-village tools.
3
+ description: Use for multi-agent task coordination, file locking, and dependency management via beads-village MCP tools.
4
4
  ---
5
5
 
6
- # Beads Skill
6
+ # Beads
7
7
 
8
- You are running the **beads** skill. Multi-agent coordination via beads-village.
8
+ **AI agents: always use `beads-village_*` MCP tools never shell `bd` commands.**
9
9
 
10
- ## Core Cycle
10
+ ## Session Cycle
11
11
 
12
12
  ```
13
- claim → reserve → work → done
13
+ init → ls(ready) → show → claim → reserve(files) → work → done
14
14
  ```
15
15
 
16
- ## beads-village Tools
16
+ ## Core Tools
17
17
 
18
18
  | Tool | Purpose |
19
19
  |------|---------|
20
- | `beads-village_claim` | Pick up next ready task |
21
- | `beads-village_reserve` | Lock files before editing |
22
- | `beads-village_done` | Complete task, release files |
23
- | `beads-village_ready` | List tasks with no blockers |
24
- | `beads-village_add` | Create new task |
25
- | `beads-village_assign` | Delegate to role (leader only) |
26
- | `beads-village_ls` | List all tasks |
27
- | `beads-village_show` | Get task details |
28
- | `beads-village_status` | Workspace overview |
29
-
30
- ## Dependency Management
31
-
32
- - Tasks with `deps` wait for dependencies to complete
33
- - Use `beads-village_ready` to find unblocked tasks
34
- - Check status with `beads-village_status`
35
-
36
- ## File Locking Protocol
37
-
38
- 1. Call `reserve` before editing shared files
39
- 2. TTL defaults to 10 minutes
40
- 3. Locks auto-release on `done`
41
- 4. Check `reservations` before editing
42
-
43
- ## Session Workflow
44
-
45
- 1. `beads-village_init` on session start
46
- 2. `beads-village_claim` to get work
47
- 3. `beads-village_reserve` files you'll edit
48
- 4. `beads-village_done` when complete
49
- 5. `beads-village_sync` to push/pull changes
50
-
51
- ## Best Practices
52
-
53
- - Always check dependencies before claiming
54
- - Reserve files early to prevent conflicts
55
- - Use descriptive task titles
56
- - Tag tasks with roles (fe, be, mobile, devops, qa)
20
+ | `beads-village_init(team=…)` | **First call every session** |
21
+ | `beads-village_ls(status="ready")` | List unblocked tasks |
22
+ | `beads-village_show(id)` | Read task details |
23
+ | `beads-village_claim()` | Claim next ready task |
24
+ | `beads-village_add(title, typ, pri, tags, deps)` | Create issue |
25
+ | `beads-village_reserve(paths, reason)` | Lock files before editing |
26
+ | `beads-village_done(id, msg)` | Complete + auto-release locks |
27
+ | `beads-village_msg(subj, global=true, to="all")` | Broadcast |
28
+ | `beads-village_inbox(unread=true)` | Read messages |
29
+ | `beads-village_status(include_agents=true)` | Workspace overview |
30
+ | `beads-village_sync()` | Git push/pull |
31
+
32
+ ## Issue Schema
33
+
34
+ ```
35
+ typ: task | bug | feature | epic | chore
36
+ pri: 0=critical 1=high 2=normal 3=low 4=backlog
37
+ tags: fe | be | devops | qa
38
+ deps: ["bv-id"] or ["discovered-from:bv-id"]
39
+ ```
40
+
41
+ ## When to Create Issues
42
+
43
+ - Trivial (< 2 min, 1-line): skip, just do it
44
+ - Non-trivial (2+ min, 2+ files): create issue first, then work
45
+
46
+ ## v1.3 API Correct Names
47
+
48
+ | Old | ✅ Correct |
49
+ |--------|-----------|
50
+ | `beads-village_ready` | `beads-village_ls(status="ready")` |
51
+ | `beads-village_broadcast` | `beads-village_msg(global=true, to="all")` |
52
+ | `beads-village_discover` | `beads-village_status(include_agents=true)` |
53
+
54
+ See [references/api-reference.md](references/api-reference.md) for full tool params and examples.
55
+ - MCP: `beads-village` see [mcp.json](mcp.json)
@@ -0,0 +1,26 @@
1
+ {
2
+ "mcpServers": {
3
+ "beads-village": {
4
+ "type": "local",
5
+ "command": ["npx", "-y", "beads-village"],
6
+ "description": "Multi-agent task coordination, file locking, issue tracking",
7
+ "tools": [
8
+ "beads-village_init",
9
+ "beads-village_add",
10
+ "beads-village_claim",
11
+ "beads-village_done",
12
+ "beads-village_ls",
13
+ "beads-village_show",
14
+ "beads-village_reserve",
15
+ "beads-village_release",
16
+ "beads-village_reservations",
17
+ "beads-village_msg",
18
+ "beads-village_inbox",
19
+ "beads-village_status",
20
+ "beads-village_sync",
21
+ "beads-village_cleanup",
22
+ "beads-village_doctor"
23
+ ]
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,64 @@
1
+ # Beads API Reference
2
+
3
+ ## Full Tool Parameters
4
+
5
+ ### beads-village_init
6
+ ```
7
+ team: string (required)
8
+ role: string (be | fe | devops | qa)
9
+ leader: bool (default: false)
10
+ start_tui: bool (default: false)
11
+ ```
12
+
13
+ ### beads-village_add
14
+ ```
15
+ title: string (required)
16
+ desc: string
17
+ typ: task | bug | feature | epic | chore
18
+ pri: 0–4 (0=critical, 4=backlog, default: 2)
19
+ tags: string[]
20
+ deps: string[] (e.g. ["bv-1", "discovered-from:bv-2"])
21
+ parent: string (epic id)
22
+ ```
23
+
24
+ ### beads-village_reserve
25
+ ```
26
+ paths: string[] (required)
27
+ reason: string
28
+ ttl: int (minutes, default: 10)
29
+ ```
30
+
31
+ ### beads-village_msg
32
+ ```
33
+ subj: string (required)
34
+ body: string
35
+ to: string
36
+ global: bool (true = team broadcast)
37
+ importance: string
38
+ thread: string
39
+ ```
40
+
41
+ ## Example: Build Agent Session
42
+
43
+ ```
44
+ beads-village_init(team="myproject")
45
+ beads-village_inbox(unread=true)
46
+ beads-village_ls(status="ready")
47
+
48
+ # → pick issue bv-42
49
+ beads-village_show("bv-42")
50
+ beads-village_claim()
51
+ beads-village_reserve(paths=["src/auth/login.ts"], reason="bv-42")
52
+
53
+ # ... implement ...
54
+
55
+ beads-village_done(id="bv-42", msg="Fixed null check in token validation")
56
+ beads-village_sync()
57
+ ```
58
+
59
+ ## File Locking Protocol
60
+
61
+ 1. `beads-village_reservations()` — check what's locked before editing
62
+ 2. `beads-village_reserve(paths=[…])` — lock your files
63
+ 3. TTL default: 10 min — extend for longer tasks
64
+ 4. `beads-village_done()` — auto-releases all locks, no manual release needed
@@ -1,36 +1,35 @@
1
1
  ---
2
2
  name: chrome-devtools
3
- description: Use for web debugging, performance analysis, network inspection, and runtime diagnostics.
3
+ description: Use for web debugging, performance analysis, network inspection, and runtime diagnostics via Chrome DevTools protocol.
4
4
  ---
5
5
 
6
- # Chrome DevTools Skill
7
-
8
- You are running the **chrome-devtools** skill. Deep debugging via embedded Chrome DevTools MCP.
6
+ # Chrome DevTools
9
7
 
10
8
  ## Capabilities
11
9
 
12
- | Action | Description |
13
- |--------|-------------|
14
- | Inspect network | Request/response headers, timing, payloads |
15
- | Debug web apps | Breakpoints, call stacks, variable inspection |
16
- | Analyze performance | Lighthouse audits, Core Web Vitals, profiling |
17
- | Console access | Execute JS, log analysis, error tracing |
18
- | DOM inspection | Element selection, computed styles, layout |
19
-
20
- ## Usage
21
-
22
- 1. Connect to target page (URL or local dev server)
23
- 2. Select tool: Network, Performance, Console, Elements
24
- 3. Perform inspection or profiling
25
- 4. Export results for analysis
10
+ | Task | What to use |
11
+ |------|-------------|
12
+ | Network timing / payloads | Network panel HAR export |
13
+ | JS breakpoints & call stack | Sources panel |
14
+ | Core Web Vitals / Lighthouse | Performance / Lighthouse audit |
15
+ | Console errors & JS execution | Console panel |
16
+ | DOM + computed styles | Elements panel |
26
17
 
27
- ## MCP Loading
18
+ ## Workflow
28
19
 
29
- This skill uses an embedded Chrome DevTools protocol connection. No external MCP server required.
20
+ 1. Connect to target (URL or local dev server)
21
+ 2. Choose panel: Network · Performance · Console · Elements
22
+ 3. Inspect or profile
23
+ 4. Export results (HAR / report) for analysis
30
24
 
31
25
  ## Best Practices
32
26
 
33
- - Profile before optimizing to identify real bottlenecks
34
- - Use network throttling to test slow connections
27
+ - Profile before optimizing identify real bottlenecks, not guesses
28
+ - Use network throttling (Fast 3G / Slow 3G) to test real-world conditions
35
29
  - Check both desktop and mobile viewports
36
- - Export HAR files for network analysis
30
+ - Export HAR for async network analysis
31
+
32
+ ## References
33
+
34
+ - [Tool reference](references/tool-reference.md) — Puppeteer MCP tools, evaluate() snippets, debug workflow
35
+ - MCP: `puppeteer` — see [mcp.json](mcp.json)
@@ -0,0 +1,17 @@
1
+ {
2
+ "mcpServers": {
3
+ "chrome-devtools": {
4
+ "type": "local",
5
+ "command": ["npx", "-y", "@modelcontextprotocol/server-puppeteer"],
6
+ "description": "Chrome DevTools — network, console, DOM, performance via Puppeteer",
7
+ "tools": [
8
+ "puppeteer_navigate",
9
+ "puppeteer_screenshot",
10
+ "puppeteer_click",
11
+ "puppeteer_fill",
12
+ "puppeteer_evaluate",
13
+ "puppeteer_pdf"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,63 @@
1
+ # Chrome DevTools — Tool Reference
2
+
3
+ ## Puppeteer MCP Tools
4
+
5
+ ```
6
+ puppeteer_navigate(url)
7
+ puppeteer_screenshot(selector?) # capture page or element
8
+ puppeteer_click(selector)
9
+ puppeteer_fill(selector, value)
10
+ puppeteer_evaluate(script) # run JS, returns result
11
+ puppeteer_pdf(path) # save page as PDF
12
+ ```
13
+
14
+ ## Useful evaluate() Snippets
15
+
16
+ ### Network timing
17
+ ```js
18
+ puppeteer_evaluate(`
19
+ JSON.stringify(
20
+ performance.getEntriesByType('navigation')[0]
21
+ )
22
+ `)
23
+ ```
24
+
25
+ ### Core Web Vitals
26
+ ```js
27
+ puppeteer_evaluate(`
28
+ new Promise(resolve => {
29
+ new PerformanceObserver(list => {
30
+ resolve(list.getEntries().map(e => ({name: e.name, value: e.value})))
31
+ }).observe({entryTypes: ['largest-contentful-paint','first-input','layout-shift']})
32
+ })
33
+ `)
34
+ ```
35
+
36
+ ### Console errors capture
37
+ ```js
38
+ puppeteer_evaluate(`
39
+ window.__errors = [];
40
+ window.onerror = (msg, src, line) => window.__errors.push({msg,src,line});
41
+ 'listening'
42
+ `)
43
+ # ... navigate, interact ...
44
+ puppeteer_evaluate("JSON.stringify(window.__errors)")
45
+ ```
46
+
47
+ ### DOM state
48
+ ```js
49
+ puppeteer_evaluate("document.querySelector('.component')?.innerHTML")
50
+ puppeteer_evaluate("getComputedStyle(document.querySelector('.btn')).backgroundColor")
51
+ ```
52
+
53
+ ## Debug Workflow
54
+
55
+ ```
56
+ 1. puppeteer_navigate(url)
57
+ 2. puppeteer_evaluate(capture console errors)
58
+ 3. puppeteer_screenshot() → baseline
59
+ 4. puppeteer_click / puppeteer_fill
60
+ 5. puppeteer_screenshot() → after interaction
61
+ 6. puppeteer_evaluate(check state)
62
+ 7. compare screenshots + state
63
+ ```
@@ -1,92 +1,54 @@
1
1
  ---
2
2
  name: condition-based-waiting
3
- description: Replace arbitrary timeouts with condition polling. Wait for actual state changes. Eliminates flaky tests from race conditions.
3
+ description: Replace arbitrary timeouts with condition polling. Eliminates flaky tests from race conditions — wait for actual state, not clock time.
4
4
  ---
5
5
 
6
- # Condition-Based Waiting Skill
6
+ # Condition-Based Waiting
7
7
 
8
- You are running the **condition-based-waiting** skill. Never use arbitrary sleeps. Always wait for conditions.
8
+ ## Rule
9
9
 
10
- ## The Problem
11
-
12
- ```javascript
13
- // BAD: Arbitrary timeout
14
- await sleep(2000);
15
- expect(element.isVisible).toBe(true);
16
-
17
- // Why it fails:
18
- // - Too short: Flaky on slow CI
19
- // - Too long: Wastes time on fast machines
20
- // - Never correct: Race condition waiting to happen
21
10
  ```
22
-
23
- ## The Solution
24
-
25
- ```javascript
26
- // GOOD: Wait for condition
27
- await waitFor(() => expect(element.isVisible).toBe(true), { timeout: 5000 });
28
-
29
- // Why it works:
30
- // - Passes immediately when ready
31
- // - Fails fast with clear error
32
- // - No wasted time
11
+ NEVER: await sleep(2000)
12
+ ALWAYS: await waitFor(() => condition, { timeout: 5000 })
33
13
  ```
34
14
 
35
15
  ## Patterns
36
16
 
37
- ### UI Waiting
38
- ```javascript
39
- // Wait for element
17
+ ```js
18
+ // UI element
40
19
  await page.waitForSelector('.loaded');
41
20
 
42
- // Wait for text
43
- await waitFor(() => page.textContent('.status') === 'Ready');
44
-
45
- // Wait for visibility
21
+ // Custom condition
46
22
  await waitFor(() => element.isVisible());
47
- ```
48
23
 
49
- ### API Waiting
50
- ```javascript
51
- // Wait for response
24
+ // API state
52
25
  await waitFor(async () => {
53
- const res = await fetch('/status');
54
- const data = await res.json();
55
- return data.ready === true;
26
+ const { ready } = await fetch('/status').then(r => r.json());
27
+ return ready === true;
56
28
  });
57
29
 
58
- // Wait for state
59
- await waitFor(() => store.getState().loaded === true);
30
+ // DB record
31
+ await waitFor(async () => (await db.find(id)) !== null);
60
32
  ```
61
33
 
62
- ### Database Waiting
63
- ```javascript
64
- // Wait for record
65
- await waitFor(async () => {
66
- const record = await db.find(id);
67
- return record !== null;
68
- });
69
- ```
70
-
71
- ## Rules
34
+ ## Timeout Strategy
72
35
 
73
- | Pattern | Verdict |
74
- |---------|---------|
75
- | `sleep(n)` or `wait(n)` | DELETE. Replace with condition. |
76
- | `setTimeout` in tests | DELETE. Use polling. |
77
- | "It works on my machine" | Race condition. Fix with condition. |
78
- | Fixed delay "to be safe" | Not safe. Use condition. |
36
+ - Default timeout: **5000ms**
37
+ - Poll interval: **50ms**
38
+ - Include current state in error message
39
+ - External services: use exponential backoff
79
40
 
80
- ## Timeout Strategy
41
+ ## Verdict Table
81
42
 
82
- 1. Set reasonable timeout (default: 5000ms)
83
- 2. Poll frequently (default: 50ms intervals)
84
- 3. Include state in error message
85
- 4. Consider exponential backoff for external services
43
+ | Pattern | Action |
44
+ |---------|--------|
45
+ | `sleep(n)` / `wait(n)` | DELETE — replace with condition |
46
+ | `setTimeout` in tests | DELETE — use polling |
47
+ | Fixed delay "to be safe" | DELETE — not safe |
48
+ | "Flaky in CI" | Race condition — apply condition wait |
86
49
 
87
50
  ## Red Flags
88
51
 
89
- - Any hardcoded delay in test code
90
- - Comments explaining why timeout is needed
91
- - Tests that pass locally but fail in CI
92
- - "Flaky" test label without investigation
52
+ - Hardcoded delay in test code
53
+ - Comment explaining why the delay is needed
54
+ - Test passes locally but flakes in CI