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.
- package/AGENTS.md +69 -3
- package/README.md +128 -92
- package/command/commit.md +1 -1
- package/command/create.md +65 -8
- package/command/debug.md +1 -1
- package/command/design.md +183 -43
- package/command/handoff.md +1 -1
- package/command/import-plan.md +2 -2
- package/command/init.md +1 -1
- package/command/issue.md +3 -4
- package/command/pr.md +1 -1
- package/command/research.md +5 -7
- package/command/resume.md +1 -1
- package/command/ship.md +29 -32
- package/command/start.md +38 -27
- package/command/{status-beads.md → status.md} +2 -3
- package/command/verify.md +132 -48
- package/dist/.tsbuildinfo +1 -1
- package/dist/agents/index.d.ts +0 -0
- package/dist/agents/index.d.ts.map +0 -0
- package/dist/beads-context.test.d.ts +2 -0
- package/dist/beads-context.test.d.ts.map +1 -0
- package/dist/cli.d.ts +0 -0
- package/dist/cli.d.ts.map +0 -0
- package/dist/cli.js +5 -0
- package/dist/cli.test.d.ts +0 -0
- package/dist/cli.test.d.ts.map +0 -0
- package/dist/clikit.schema.json +32 -11
- package/dist/clilog.test.d.ts +0 -0
- package/dist/clilog.test.d.ts.map +0 -0
- package/dist/commands/index.d.ts +0 -0
- package/dist/commands/index.d.ts.map +0 -0
- package/dist/config.d.ts +15 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.test.d.ts +0 -0
- package/dist/config.test.d.ts.map +0 -0
- package/dist/hooks/beads-context.d.ts +2 -0
- package/dist/hooks/beads-context.d.ts.map +1 -1
- package/dist/hooks/empty-message-sanitizer.d.ts +0 -0
- package/dist/hooks/empty-message-sanitizer.d.ts.map +0 -0
- package/dist/hooks/error-logger.d.ts +0 -0
- package/dist/hooks/error-logger.d.ts.map +0 -0
- package/dist/hooks/git-guard.d.ts +0 -0
- package/dist/hooks/git-guard.d.ts.map +0 -0
- package/dist/hooks/index.d.ts +0 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/memory-digest.d.ts +1 -0
- package/dist/hooks/memory-digest.d.ts.map +1 -1
- package/dist/hooks/security-check.d.ts +0 -0
- package/dist/hooks/security-check.d.ts.map +0 -0
- package/dist/hooks/subagent-question-blocker.d.ts +0 -0
- package/dist/hooks/subagent-question-blocker.d.ts.map +0 -0
- package/dist/hooks/todo-beads-sync.d.ts +1 -0
- package/dist/hooks/todo-beads-sync.d.ts.map +1 -1
- package/dist/hooks/todo-enforcer.d.ts +1 -1
- package/dist/hooks/todo-enforcer.d.ts.map +1 -1
- package/dist/hooks/truncator.d.ts +0 -0
- package/dist/hooks/truncator.d.ts.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +250 -576
- package/dist/skills/index.d.ts +0 -0
- package/dist/skills/index.d.ts.map +0 -0
- package/dist/tools/cass-memory.d.ts +0 -0
- package/dist/tools/cass-memory.d.ts.map +0 -0
- package/dist/tools/context-summary.d.ts +0 -0
- package/dist/tools/context-summary.d.ts.map +0 -0
- package/dist/tools/index.d.ts +0 -3
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/memory-db.d.ts +0 -0
- package/dist/tools/memory-db.d.ts.map +0 -0
- package/dist/tools/memory.d.ts +0 -0
- package/dist/tools/memory.d.ts.map +0 -0
- package/dist/tools/observation.d.ts +0 -0
- package/dist/tools/observation.d.ts.map +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/memory/_digest.md +1 -1
- package/memory/_templates/handoff.md +0 -0
- package/memory/_templates/plan.md +35 -0
- package/memory/_templates/prd.md +0 -0
- package/memory/_templates/research.md +0 -0
- package/memory/_templates/review.md +0 -0
- package/memory/_templates/spec.md +12 -0
- package/memory/beads/.gitkeep +0 -0
- package/memory/handoffs/.gitkeep +0 -0
- package/memory/memory.db +0 -0
- package/memory/plans/.gitkeep +0 -0
- package/memory/prds/.gitkeep +0 -0
- package/memory/research/.gitkeep +0 -0
- package/memory/reviews/.gitkeep +0 -0
- package/memory/specs/.gitkeep +0 -0
- package/package.json +4 -4
- package/skill/beads/SKILL.md +42 -43
- package/skill/beads/mcp.json +26 -0
- package/skill/beads/references/api-reference.md +64 -0
- package/skill/chrome-devtools/SKILL.md +22 -23
- package/skill/chrome-devtools/mcp.json +17 -0
- package/skill/chrome-devtools/references/tool-reference.md +63 -0
- package/skill/condition-based-waiting/SKILL.md +28 -66
- package/skill/deep-research/SKILL.md +34 -103
- package/skill/deep-research/mcp.json +21 -0
- package/skill/deep-research/references/lsp-ops.md +44 -0
- package/skill/defense-in-depth/SKILL.md +29 -69
- package/skill/executing-plans/SKILL.md +25 -34
- package/skill/finishing-a-development-branch/SKILL.md +28 -89
- package/skill/playwright/SKILL.md +27 -22
- package/skill/playwright/mcp.json +20 -0
- package/skill/playwright/references/tool-reference.md +64 -0
- package/skill/receiving-code-review/SKILL.md +16 -27
- package/skill/requesting-code-review/SKILL.md +22 -26
- package/skill/ritual-workflow/SKILL.md +22 -82
- package/skill/root-cause-tracing/SKILL.md +30 -54
- package/skill/session-management/SKILL.md +21 -40
- package/skill/source-code-research/SKILL.md +33 -102
- package/skill/source-code-research/mcp.json +13 -0
- package/skill/source-code-research/references/quick-ref.md +65 -0
- package/skill/systematic-debugging/SKILL.md +28 -41
- package/skill/systematic-debugging/references/patterns.md +71 -0
- package/skill/test-driven-development/SKILL.md +16 -40
- package/skill/testing-anti-patterns/SKILL.md +36 -64
- package/skill/testing-anti-patterns/references/decision-matrix.md +55 -0
- package/skill/using-git-worktrees/SKILL.md +27 -103
- package/skill/vercel-react-best-practices/SKILL.md +50 -139
- package/skill/vercel-react-best-practices/references/patterns.md +70 -0
- package/skill/verification-before-completion/SKILL.md +19 -37
- package/skill/writing-plans/SKILL.md +20 -32
- package/skill/writing-skills/SKILL.md +52 -41
- package/skill/writing-skills/references/skill-anatomy.md +210 -0
- package/src/agents/AGENTS.md +48 -18
- package/src/agents/build.md +342 -93
- package/src/agents/explore.md +77 -60
- package/src/agents/index.ts +0 -0
- package/src/agents/oracle.md +153 -63
- package/src/agents/plan.md +275 -110
- package/src/agents/research.md +71 -53
- package/src/agents/review.md +182 -61
- package/src/agents/vision.md +7 -5
- package/command/plan.md +0 -152
- package/command/review-codebase.md +0 -228
- package/command/review.md +0 -135
- package/command/vision.md +0 -210
- package/dist/hooks/swarm-enforcer.d.ts +0 -31
- package/dist/hooks/swarm-enforcer.d.ts.map +0 -1
- package/dist/tools/beads-memory-sync.d.ts +0 -17
- package/dist/tools/beads-memory-sync.d.ts.map +0 -1
- package/dist/tools/quick-research.d.ts +0 -16
- package/dist/tools/quick-research.d.ts.map +0 -1
- package/dist/tools/swarm.d.ts +0 -57
- package/dist/tools/swarm.d.ts.map +0 -1
- package/skill/accessibility-audit/SKILL.md +0 -115
- package/skill/beads-bridge/SKILL.md +0 -45
- package/skill/brainstorming/SKILL.md +0 -41
- package/skill/cass-village/SKILL.md +0 -217
- package/skill/cloudflare/SKILL.md +0 -96
- package/skill/design-system-audit/SKILL.md +0 -136
- package/skill/development-lifecycle/SKILL.md +0 -58
- package/skill/dispatching-parallel-agents/SKILL.md +0 -94
- package/skill/figma/SKILL.md +0 -34
- package/skill/frontend-aesthetics/SKILL.md +0 -63
- package/skill/gemini-large-context/SKILL.md +0 -80
- package/skill/mockup-to-code/SKILL.md +0 -98
- package/skill/mqdh/SKILL.md +0 -54
- package/skill/notebooklm/SKILL.md +0 -71
- package/skill/playwriter/SKILL.md +0 -56
- package/skill/polar/SKILL.md +0 -39
- package/skill/resend/SKILL.md +0 -85
- package/skill/sharing-skills/SKILL.md +0 -50
- package/skill/subagent-driven-development/SKILL.md +0 -69
- package/skill/supabase/SKILL.md +0 -80
- package/skill/supabase-postgres-best-practices/SKILL.md +0 -168
- package/skill/swarm-coordination/SKILL.md +0 -54
- package/skill/testing-skills-with-subagents/SKILL.md +0 -102
- package/skill/ui-ux-research/SKILL.md +0 -93
- package/skill/v0/SKILL.md +0 -67
- package/skill/v1-run/SKILL.md +0 -85
- package/skill/visual-analysis/SKILL.md +0 -113
package/dist/skills/index.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -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,
|
|
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
|
package/dist/tools/memory.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/types.d.ts
CHANGED
|
File without changes
|
package/dist/types.d.ts.map
CHANGED
|
File without changes
|
package/memory/_digest.md
CHANGED
|
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
|
package/memory/_templates/prd.md
CHANGED
|
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
|
package/memory/beads/.gitkeep
CHANGED
|
File without changes
|
package/memory/handoffs/.gitkeep
CHANGED
|
File without changes
|
package/memory/memory.db
CHANGED
|
Binary file
|
package/memory/plans/.gitkeep
CHANGED
|
File without changes
|
package/memory/prds/.gitkeep
CHANGED
|
File without changes
|
package/memory/research/.gitkeep
CHANGED
|
File without changes
|
package/memory/reviews/.gitkeep
CHANGED
|
File without changes
|
package/memory/specs/.gitkeep
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clikit-plugin",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "OpenCode plugin
|
|
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.
|
|
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
|
+
}
|
package/skill/beads/SKILL.md
CHANGED
|
@@ -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
|
|
6
|
+
# Beads
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
**AI agents: always use `beads-village_*` MCP tools — never shell `bd` commands.**
|
|
9
9
|
|
|
10
|
-
##
|
|
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
|
-
##
|
|
16
|
+
## Core Tools
|
|
17
17
|
|
|
18
18
|
| Tool | Purpose |
|
|
19
19
|
|------|---------|
|
|
20
|
-
| `beads-
|
|
21
|
-
| `beads-
|
|
22
|
-
| `beads-
|
|
23
|
-
| `beads-
|
|
24
|
-
| `beads-village_add` | Create
|
|
25
|
-
| `beads-
|
|
26
|
-
| `beads-
|
|
27
|
-
| `beads-
|
|
28
|
-
| `beads-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
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
|
|
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
|
-
|
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| Console
|
|
18
|
-
| DOM
|
|
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
|
-
##
|
|
18
|
+
## Workflow
|
|
28
19
|
|
|
29
|
-
|
|
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
|
|
34
|
-
- Use network throttling to test
|
|
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
|
|
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.
|
|
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
|
|
6
|
+
# Condition-Based Waiting
|
|
7
7
|
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
// Wait for element
|
|
17
|
+
```js
|
|
18
|
+
// UI element
|
|
40
19
|
await page.waitForSelector('.loaded');
|
|
41
20
|
|
|
42
|
-
//
|
|
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
|
-
|
|
50
|
-
```javascript
|
|
51
|
-
// Wait for response
|
|
24
|
+
// API state
|
|
52
25
|
await waitFor(async () => {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
return data.ready === true;
|
|
26
|
+
const { ready } = await fetch('/status').then(r => r.json());
|
|
27
|
+
return ready === true;
|
|
56
28
|
});
|
|
57
29
|
|
|
58
|
-
//
|
|
59
|
-
await waitFor(() =>
|
|
30
|
+
// DB record
|
|
31
|
+
await waitFor(async () => (await db.find(id)) !== null);
|
|
60
32
|
```
|
|
61
33
|
|
|
62
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
##
|
|
41
|
+
## Verdict Table
|
|
81
42
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
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
|