@jaybeeuu/agent-cortex 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.beads/README.md +81 -0
- package/.beads/config.yaml +1 -0
- package/.beads/issues.jsonl +236 -0
- package/.beads/metadata.json +7 -0
- package/.claude-plugin/marketplace.json +16 -0
- package/.github/workflows/ci.test.ts +217 -0
- package/.github/workflows/ci.yml +35 -0
- package/.github/workflows/publish.yml +36 -0
- package/.junie/guidelines.md +87 -0
- package/.junie/mcp/mcp.json +10 -0
- package/AGENTS.md +102 -0
- package/CHANGELOG.md +705 -0
- package/README.md +209 -0
- package/agents/README.md +235 -0
- package/agents/plan.agent.md +56 -0
- package/agents/ralph-plan.agent.md +119 -0
- package/agents/ralph.agent.md +305 -0
- package/agents/strategy.agent.md +109 -0
- package/agents-native/ralph.md +193 -0
- package/bin/agent-cortex.mjs +27 -0
- package/claude/.claude-plugin/plugin.json +11 -0
- package/claude/.mcp.json +18 -0
- package/claude/agents/plan.md +56 -0
- package/claude/agents/ralph-plan.md +119 -0
- package/claude/agents/ralph.md +193 -0
- package/claude/agents/strategy.md +109 -0
- package/claude/hooks.json +23 -0
- package/claude/scripts/statusline-command.sh +124 -0
- package/docs/ideas/auto-model-selection.md +75 -0
- package/docs/ideas/improve-pi-system-prompt.md +34 -0
- package/docs/ideas/model-selector.md +40 -0
- package/docs/ideas/pi-task-memory.md +34 -0
- package/docs/ideas/qa-extension.md +43 -0
- package/docs/inspirations.md +33 -0
- package/docs/research/gas-city-research.md +256 -0
- package/docs/research/skill-design-research.md +286 -0
- package/docs/research/skill-improvements-analysis.md +117 -0
- package/docs/research/skill-patterns-research.md +24 -0
- package/docs/skills/skill-anatomy.md +149 -0
- package/docs/user-preferences.md +17 -0
- package/extensions/agent-modes/index.ts +507 -0
- package/extensions/auto-name.ts +107 -0
- package/extensions/context-loader.md +35 -0
- package/extensions/context-loader.ts +65 -0
- package/extensions/lib/tiny-model.ts +212 -0
- package/extensions/notify/index.ts +293 -0
- package/extensions/session-start.ts +44 -0
- package/extensions/skill-stats/README.md +74 -0
- package/extensions/skill-stats/context-loader.test.ts +107 -0
- package/extensions/skill-stats/discover.ts +119 -0
- package/extensions/skill-stats/format.ts +13 -0
- package/extensions/skill-stats/index.test.ts +452 -0
- package/extensions/skill-stats/index.ts +222 -0
- package/extensions/skill-stats/package.json +19 -0
- package/extensions/skill-stats/pnpm-lock.yaml +329 -0
- package/extensions/skill-stats/record.ts +48 -0
- package/extensions/skill-stats/store.ts +104 -0
- package/extensions/skill-stats/tsconfig.json +12 -0
- package/extensions/subagent/README.md +175 -0
- package/extensions/subagent/agents/planner.md +37 -0
- package/extensions/subagent/agents/reviewer.md +35 -0
- package/extensions/subagent/agents/scout.md +50 -0
- package/extensions/subagent/agents/worker.md +24 -0
- package/extensions/subagent/agents.ts +126 -0
- package/extensions/subagent/index.ts +1138 -0
- package/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/extensions/subagent/prompts/implement.md +10 -0
- package/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/hooks.json +10 -0
- package/lib/cli.mjs +37 -0
- package/package.json +39 -0
- package/pi/keybindings.json +3 -0
- package/pi/settings.json +29 -0
- package/plugin.json +35 -0
- package/pnpm-workspace.yaml +7 -0
- package/scripts/build-claude-agents.mjs +179 -0
- package/scripts/install-instructions.sh +82 -0
- package/skills/engineering/design-an-interface/SKILL.md +94 -0
- package/skills/engineering/grill-with-docs/SKILL.md +88 -0
- package/skills/engineering/improve-codebase-architecture/REFERENCE.md +78 -0
- package/skills/engineering/improve-codebase-architecture/SKILL.md +81 -0
- package/skills/engineering/tdd/SKILL.md +150 -0
- package/skills/engineering/tdd/deep-modules.md +33 -0
- package/skills/engineering/tdd/interface-design.md +31 -0
- package/skills/engineering/tdd/mocking.md +59 -0
- package/skills/engineering/tdd/refactoring.md +10 -0
- package/skills/engineering/tdd/tests.md +61 -0
- package/skills/engineering/technical-direction/SKILL.md +86 -0
- package/skills/planning/classify-bead/SKILL.md +67 -0
- package/skills/planning/create-task/SKILL.md +96 -0
- package/skills/planning/create-task/pipeline.json +33 -0
- package/skills/planning/create-task/scripts/create-chores.ts +112 -0
- package/skills/planning/create-task/scripts/package.json +14 -0
- package/skills/planning/create-task/scripts/pnpm-lock.yaml +342 -0
- package/skills/planning/create-task/scripts/tsconfig.json +12 -0
- package/skills/planning/create-task/templates/code.md +40 -0
- package/skills/planning/create-task/templates/document.md +40 -0
- package/skills/planning/create-task/templates/fix.md +27 -0
- package/skills/planning/create-task/templates/review.md +36 -0
- package/skills/planning/create-task/templates/verify.md +43 -0
- package/skills/planning/prd-to-tasks/SKILL.md +227 -0
- package/skills/planning/record-idea/SKILL.md +62 -0
- package/skills/planning/record-idea/scripts/new-idea.sh +89 -0
- package/skills/planning/request-refactor-plan/SKILL.md +73 -0
- package/skills/planning/write-a-prd/SKILL.md +74 -0
- package/skills/planning/write-a-ticket/SKILL.md +97 -0
- package/skills/productivity/bd-tool/SKILL.md +90 -0
- package/skills/productivity/grill-me/SKILL.md +10 -0
- package/skills/productivity/handoff/SKILL.md +15 -0
- package/skills/productivity/init-beads/SKILL.md +93 -0
- package/skills/productivity/teach/GLOSSARY-FORMAT.md +35 -0
- package/skills/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/skills/productivity/teach/MISSION-FORMAT.md +31 -0
- package/skills/productivity/teach/RESOURCES-FORMAT.md +32 -0
- package/skills/productivity/teach/SKILL.md +109 -0
- package/skills/productivity/validate-agent-dir/scripts/package.json +15 -0
- package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +329 -0
- package/skills/productivity/validate-agent-dir/scripts/pnpm-workspace.yaml +2 -0
- package/skills/productivity/validate-agent-dir/scripts/tsconfig.json +19 -0
- package/skills/productivity/validate-agent-dir/scripts/validate-agent-dir.test.ts +317 -0
- package/skills/productivity/validate-agent-dir/scripts/validate-agent-dir.ts +127 -0
- package/skills/productivity/write-a-skill/SKILL.md +74 -0
- package/skills/review/maintain-agent-docs/REFERENCE.md +246 -0
- package/skills/review/maintain-agent-docs/SKILL.md +83 -0
- package/skills/review/refactor-skill/EXAMPLES.md +20 -0
- package/skills/review/refactor-skill/SKILL.md +148 -0
- package/skills/review/review-security/SKILL.md +107 -0
- package/skills/review/review-security/scripts/install-gitleaks.sh +43 -0
- package/skills/style/style-code/REFERENCE.md +38 -0
- package/skills/style/style-code/SKILL.md +113 -0
- package/skills/style/style-comms/SKILL.md +93 -0
- package/skills/style/style-documentation/SKILL.md +112 -0
- package/skills/style/style-tests/SKILL.md +97 -0
- package/skills/workflow/git-workflow/SKILL.md +85 -0
- package/skills/workflow/hitl-collab/SKILL.md +29 -0
- package/skills/workflow/plan/SKILL.md +272 -0
- package/skills/workflow/ralph/REFERENCE.md +202 -0
- package/skills/workflow/ralph/SKILL.md +105 -0
- package/skills/workflow/run-pipeline-stage/SKILL.md +151 -0
- package/skills/workflow/run-pipeline-stage/playbooks/code.md +17 -0
- package/skills/workflow/run-pipeline-stage/playbooks/document.md +18 -0
- package/skills/workflow/run-pipeline-stage/playbooks/fix.md +17 -0
- package/skills/workflow/run-pipeline-stage/playbooks/review.md +19 -0
- package/skills/workflow/run-pipeline-stage/playbooks/verify.md +14 -0
- package/skills/workflow/run-pipeline-stage/prompts/stage-runner.md +20 -0
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.test.ts +783 -0
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.ts +586 -0
- package/skills/workflow/run-pipeline-stage/scripts/package.json +15 -0
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +342 -0
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-workspace.yaml +2 -0
- package/skills/workflow/run-pipeline-stage/scripts/tsconfig.json +12 -0
- package/skills/workflow/using-agent-skills/SKILL.md +109 -0
- package/skills/workflow/using-agent-skills/scripts/validate-skill-structure.test.ts +73 -0
- package/test/cli.test.mjs +149 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-task
|
|
3
|
+
description: Create a bead, classify it, and if AFK expand it into pipeline stage child beads plus a HITL PR gate task. Use when creating a new task that should be tracked and moved through implementation and human review gates.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Create Task
|
|
7
|
+
|
|
8
|
+
Create a bead, classify it via `classify-bead`, and — if AFK — expand it into child chore beads for each pipeline stage plus a child HITL PR gate task bead.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
| Parameter | Required | Description |
|
|
13
|
+
|-------------|----------|--------------------------------------|
|
|
14
|
+
| title | yes | Task title |
|
|
15
|
+
| description | yes | Task description |
|
|
16
|
+
| priority | no | 0–3 (default 2) |
|
|
17
|
+
| parent | no | Parent bead ID for `parent-child` dep |
|
|
18
|
+
|
|
19
|
+
## Procedure
|
|
20
|
+
|
|
21
|
+
### 1. Create the bead
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
bd create "<title>" --description "<description>" --priority <priority>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If a `parent` was provided, add a `parent-child` dependency:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
bd dep add <new-id> <parent> --type parent-child
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Record the new bead ID.
|
|
34
|
+
|
|
35
|
+
### 2. Classify the bead
|
|
36
|
+
|
|
37
|
+
Invoke the `classify-bead` skill on the new bead (as a subagent per that skill's invocation instructions). It returns `AFK` or `HITL`.
|
|
38
|
+
|
|
39
|
+
### 3. Branch on classification
|
|
40
|
+
|
|
41
|
+
**If HITL**: stop. Report the bead ID and classification to the caller. No further action.
|
|
42
|
+
|
|
43
|
+
**If AFK**: continue to step 4.
|
|
44
|
+
|
|
45
|
+
### 4. Expand into pipeline stage chores
|
|
46
|
+
|
|
47
|
+
Run the `create-chores` script, which reads `pipeline.json` and deterministically creates all
|
|
48
|
+
stage chores in one shot. They are plain (non-ephemeral) chores — `bd ready` must surface
|
|
49
|
+
them without `--include-ephemeral` for ralph to discover them:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Run from the TARGET project's directory (cwd must be inside the target's
|
|
53
|
+
# .beads tree) — bd resolves its beads DB from cwd, not from the skill's
|
|
54
|
+
# location. Do NOT use `pnpm --prefix <scripts> exec`, which changes cwd to
|
|
55
|
+
# the scripts dir and makes bd pick the skill repo's own .beads instead of
|
|
56
|
+
# the target project's.
|
|
57
|
+
<skill-scripts>/node_modules/.bin/tsx \
|
|
58
|
+
<skill-scripts>/create-chores.ts \
|
|
59
|
+
--parent <parent-id> \
|
|
60
|
+
--priority <priority>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Where `<skill-scripts>` is the absolute path to this skill's own `scripts/` directory —
|
|
64
|
+
resolve it from wherever this skill was actually loaded from (it varies by harness and
|
|
65
|
+
install location; e.g. a Claude Code plugin cache dir vs. a Copilot
|
|
66
|
+
`~/.copilot/installed-plugins/...` install vs. a local dev checkout). Do not hardcode
|
|
67
|
+
one harness's path.
|
|
68
|
+
|
|
69
|
+
The script outputs a JSON object mapping stage IDs to chore bead IDs, plus a HITL PR gate task bead ID, e.g.:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"code": "abc123",
|
|
74
|
+
"verify": "def456",
|
|
75
|
+
"review": "ghi789",
|
|
76
|
+
"document": "jkl012",
|
|
77
|
+
"featurePrReview": "bd-mno345"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Each stage chore is created with:
|
|
82
|
+
- **type**: `chore`
|
|
83
|
+
- **Title pattern**: `[<parent-id>] <stage title>` (e.g. `[abc-123] Code`)
|
|
84
|
+
- **Labels**: `stage:<id>` (e.g. `stage:code`, `stage:verify`)
|
|
85
|
+
- **Dependencies**: `parent-child` to parent bead; `blocks` between stages per `dependsOn`
|
|
86
|
+
|
|
87
|
+
The PR gate bead is created with:
|
|
88
|
+
- **type**: `task`
|
|
89
|
+
- **Title**: `[<parent-id>] PR Review and Merge`
|
|
90
|
+
- **Labels**: `implementation-type:hitl`, `lifecycle:feature-pr`
|
|
91
|
+
- **Dependencies**: `parent-child` to parent bead; `blocks` on the final document stage chore
|
|
92
|
+
- **Purpose**: human review of the agent PR (agent-branch → feature branch)
|
|
93
|
+
|
|
94
|
+
### 5. Report
|
|
95
|
+
|
|
96
|
+
Return the parent bead ID, classification (`AFK`), and the list of created child bead IDs (including `featurePrReview`).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"maxFixRounds": 4,
|
|
3
|
+
"stages": [
|
|
4
|
+
{
|
|
5
|
+
"id": "code",
|
|
6
|
+
"title": "Code",
|
|
7
|
+
"description": "Implement the task using a test-driven approach.",
|
|
8
|
+
"template": "templates/code.md",
|
|
9
|
+
"dependsOn": []
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "verify",
|
|
13
|
+
"title": "Verify",
|
|
14
|
+
"description": "Run the project's test and lint commands and report the outcome.",
|
|
15
|
+
"template": "templates/verify.md",
|
|
16
|
+
"dependsOn": ["code"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "review",
|
|
20
|
+
"title": "Review",
|
|
21
|
+
"description": "Review the implementation for security, correctness, and alignment with task requirements.",
|
|
22
|
+
"template": "templates/review.md",
|
|
23
|
+
"dependsOn": ["verify"]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "document",
|
|
27
|
+
"title": "Document",
|
|
28
|
+
"description": "Review changes and update documentation if key decisions, behaviour changes, or constraints were introduced.",
|
|
29
|
+
"template": "templates/document.md",
|
|
30
|
+
"dependsOn": ["review"]
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { resolve, dirname } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
|
|
6
|
+
// ─── Types ────────────────────────────────────────────────────────────────────
|
|
7
|
+
|
|
8
|
+
interface Stage {
|
|
9
|
+
id: string;
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
template: string;
|
|
13
|
+
dependsOn: string[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface Pipeline {
|
|
17
|
+
maxFixRounds: number;
|
|
18
|
+
stages: Stage[];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// ─── Args ─────────────────────────────────────────────────────────────────────
|
|
22
|
+
|
|
23
|
+
function parseArgs(args: string[]): { parentId: string; priority: string } {
|
|
24
|
+
let parentId: string | undefined;
|
|
25
|
+
let priority = '2';
|
|
26
|
+
|
|
27
|
+
for (let i = 0; i < args.length; i++) {
|
|
28
|
+
if (args[i] === '--parent' && args[i + 1]) { parentId = args[++i]; }
|
|
29
|
+
else if (args[i] === '--priority' && args[i + 1]) { priority = args[++i]; }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!parentId) {
|
|
33
|
+
console.error('Usage: create-chores.ts --parent <bead-id> [--priority <0-4>]');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return { parentId, priority };
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ─── Exec ─────────────────────────────────────────────────────────────────────
|
|
41
|
+
|
|
42
|
+
function run(args: string[]): string {
|
|
43
|
+
return execSync(args.join(' '), { encoding: 'utf-8' }).trim();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ─── Main ─────────────────────────────────────────────────────────────────────
|
|
47
|
+
|
|
48
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
49
|
+
const __dirname = dirname(__filename);
|
|
50
|
+
|
|
51
|
+
const { parentId, priority } = parseArgs(process.argv.slice(2));
|
|
52
|
+
|
|
53
|
+
const pipelinePath = resolve(__dirname, '..', 'pipeline.json');
|
|
54
|
+
const pipeline: Pipeline = JSON.parse(readFileSync(pipelinePath, 'utf-8'));
|
|
55
|
+
|
|
56
|
+
const stageToBeadId = new Map<string, string>();
|
|
57
|
+
|
|
58
|
+
for (const stage of pipeline.stages) {
|
|
59
|
+
const title = `[${parentId}] ${stage.title}`;
|
|
60
|
+
|
|
61
|
+
const beadId = run([
|
|
62
|
+
'bd', 'create', JSON.stringify(title),
|
|
63
|
+
'--type', 'chore',
|
|
64
|
+
'--description', JSON.stringify(stage.description),
|
|
65
|
+
'--priority', priority,
|
|
66
|
+
'--labels', `stage:${stage.id}`,
|
|
67
|
+
'--parent', parentId,
|
|
68
|
+
'--silent',
|
|
69
|
+
]);
|
|
70
|
+
|
|
71
|
+
stageToBeadId.set(stage.id, beadId);
|
|
72
|
+
|
|
73
|
+
for (const depStageId of stage.dependsOn) {
|
|
74
|
+
const depBeadId = stageToBeadId.get(depStageId);
|
|
75
|
+
if (!depBeadId) {
|
|
76
|
+
console.error(`Stage '${stage.id}' depends on '${depStageId}', but it has not been created yet. Check dependsOn ordering in pipeline.json.`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
run(['bd', 'dep', 'add', beadId, depBeadId, '--type', 'blocks']);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const finalStageId = pipeline.stages.at(-1)?.id;
|
|
84
|
+
if (!finalStageId) {
|
|
85
|
+
console.error('No pipeline stages found in pipeline.json.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const documentStageBeadId = stageToBeadId.get('document') ?? stageToBeadId.get(finalStageId);
|
|
90
|
+
if (!documentStageBeadId) {
|
|
91
|
+
console.error('Could not resolve the final stage bead needed for PR gate dependency.');
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const prGateBeadId = run([
|
|
96
|
+
'bd', 'create', JSON.stringify(`[${parentId}] PR Review and Merge`),
|
|
97
|
+
'--type', 'task',
|
|
98
|
+
'--description', JSON.stringify(
|
|
99
|
+
'Human review gate: review and merge the agent PR into the feature branch before closing this feature.',
|
|
100
|
+
),
|
|
101
|
+
'--priority', priority,
|
|
102
|
+
'--labels', 'implementation-type:hitl,lifecycle:feature-pr',
|
|
103
|
+
'--parent', parentId,
|
|
104
|
+
'--silent',
|
|
105
|
+
]);
|
|
106
|
+
run(['bd', 'dep', 'add', prGateBeadId, documentStageBeadId, '--type', 'blocks']);
|
|
107
|
+
|
|
108
|
+
const result: Record<string, string> = {
|
|
109
|
+
...Object.fromEntries(stageToBeadId),
|
|
110
|
+
featurePrReview: prGateBeadId,
|
|
111
|
+
};
|
|
112
|
+
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agent-cortex/create-task-scripts",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"typecheck": "tsc --noEmit"
|
|
8
|
+
},
|
|
9
|
+
"devDependencies": {
|
|
10
|
+
"@types/node": "^22.0.0",
|
|
11
|
+
"tsx": "^4.0.0",
|
|
12
|
+
"typescript": "^5.0.0"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
lockfileVersion: '9.0'
|
|
2
|
+
|
|
3
|
+
settings:
|
|
4
|
+
autoInstallPeers: true
|
|
5
|
+
excludeLinksFromLockfile: false
|
|
6
|
+
|
|
7
|
+
importers:
|
|
8
|
+
|
|
9
|
+
.:
|
|
10
|
+
devDependencies:
|
|
11
|
+
'@types/node':
|
|
12
|
+
specifier: ^22.0.0
|
|
13
|
+
version: 22.19.18
|
|
14
|
+
tsx:
|
|
15
|
+
specifier: ^4.0.0
|
|
16
|
+
version: 4.21.0
|
|
17
|
+
typescript:
|
|
18
|
+
specifier: ^5.0.0
|
|
19
|
+
version: 5.9.3
|
|
20
|
+
|
|
21
|
+
packages:
|
|
22
|
+
|
|
23
|
+
'@esbuild/aix-ppc64@0.27.7':
|
|
24
|
+
resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==}
|
|
25
|
+
engines: {node: '>=18'}
|
|
26
|
+
cpu: [ppc64]
|
|
27
|
+
os: [aix]
|
|
28
|
+
|
|
29
|
+
'@esbuild/android-arm64@0.27.7':
|
|
30
|
+
resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==}
|
|
31
|
+
engines: {node: '>=18'}
|
|
32
|
+
cpu: [arm64]
|
|
33
|
+
os: [android]
|
|
34
|
+
|
|
35
|
+
'@esbuild/android-arm@0.27.7':
|
|
36
|
+
resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==}
|
|
37
|
+
engines: {node: '>=18'}
|
|
38
|
+
cpu: [arm]
|
|
39
|
+
os: [android]
|
|
40
|
+
|
|
41
|
+
'@esbuild/android-x64@0.27.7':
|
|
42
|
+
resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==}
|
|
43
|
+
engines: {node: '>=18'}
|
|
44
|
+
cpu: [x64]
|
|
45
|
+
os: [android]
|
|
46
|
+
|
|
47
|
+
'@esbuild/darwin-arm64@0.27.7':
|
|
48
|
+
resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==}
|
|
49
|
+
engines: {node: '>=18'}
|
|
50
|
+
cpu: [arm64]
|
|
51
|
+
os: [darwin]
|
|
52
|
+
|
|
53
|
+
'@esbuild/darwin-x64@0.27.7':
|
|
54
|
+
resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==}
|
|
55
|
+
engines: {node: '>=18'}
|
|
56
|
+
cpu: [x64]
|
|
57
|
+
os: [darwin]
|
|
58
|
+
|
|
59
|
+
'@esbuild/freebsd-arm64@0.27.7':
|
|
60
|
+
resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==}
|
|
61
|
+
engines: {node: '>=18'}
|
|
62
|
+
cpu: [arm64]
|
|
63
|
+
os: [freebsd]
|
|
64
|
+
|
|
65
|
+
'@esbuild/freebsd-x64@0.27.7':
|
|
66
|
+
resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==}
|
|
67
|
+
engines: {node: '>=18'}
|
|
68
|
+
cpu: [x64]
|
|
69
|
+
os: [freebsd]
|
|
70
|
+
|
|
71
|
+
'@esbuild/linux-arm64@0.27.7':
|
|
72
|
+
resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==}
|
|
73
|
+
engines: {node: '>=18'}
|
|
74
|
+
cpu: [arm64]
|
|
75
|
+
os: [linux]
|
|
76
|
+
|
|
77
|
+
'@esbuild/linux-arm@0.27.7':
|
|
78
|
+
resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==}
|
|
79
|
+
engines: {node: '>=18'}
|
|
80
|
+
cpu: [arm]
|
|
81
|
+
os: [linux]
|
|
82
|
+
|
|
83
|
+
'@esbuild/linux-ia32@0.27.7':
|
|
84
|
+
resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==}
|
|
85
|
+
engines: {node: '>=18'}
|
|
86
|
+
cpu: [ia32]
|
|
87
|
+
os: [linux]
|
|
88
|
+
|
|
89
|
+
'@esbuild/linux-loong64@0.27.7':
|
|
90
|
+
resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==}
|
|
91
|
+
engines: {node: '>=18'}
|
|
92
|
+
cpu: [loong64]
|
|
93
|
+
os: [linux]
|
|
94
|
+
|
|
95
|
+
'@esbuild/linux-mips64el@0.27.7':
|
|
96
|
+
resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==}
|
|
97
|
+
engines: {node: '>=18'}
|
|
98
|
+
cpu: [mips64el]
|
|
99
|
+
os: [linux]
|
|
100
|
+
|
|
101
|
+
'@esbuild/linux-ppc64@0.27.7':
|
|
102
|
+
resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==}
|
|
103
|
+
engines: {node: '>=18'}
|
|
104
|
+
cpu: [ppc64]
|
|
105
|
+
os: [linux]
|
|
106
|
+
|
|
107
|
+
'@esbuild/linux-riscv64@0.27.7':
|
|
108
|
+
resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==}
|
|
109
|
+
engines: {node: '>=18'}
|
|
110
|
+
cpu: [riscv64]
|
|
111
|
+
os: [linux]
|
|
112
|
+
|
|
113
|
+
'@esbuild/linux-s390x@0.27.7':
|
|
114
|
+
resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==}
|
|
115
|
+
engines: {node: '>=18'}
|
|
116
|
+
cpu: [s390x]
|
|
117
|
+
os: [linux]
|
|
118
|
+
|
|
119
|
+
'@esbuild/linux-x64@0.27.7':
|
|
120
|
+
resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==}
|
|
121
|
+
engines: {node: '>=18'}
|
|
122
|
+
cpu: [x64]
|
|
123
|
+
os: [linux]
|
|
124
|
+
|
|
125
|
+
'@esbuild/netbsd-arm64@0.27.7':
|
|
126
|
+
resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==}
|
|
127
|
+
engines: {node: '>=18'}
|
|
128
|
+
cpu: [arm64]
|
|
129
|
+
os: [netbsd]
|
|
130
|
+
|
|
131
|
+
'@esbuild/netbsd-x64@0.27.7':
|
|
132
|
+
resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==}
|
|
133
|
+
engines: {node: '>=18'}
|
|
134
|
+
cpu: [x64]
|
|
135
|
+
os: [netbsd]
|
|
136
|
+
|
|
137
|
+
'@esbuild/openbsd-arm64@0.27.7':
|
|
138
|
+
resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==}
|
|
139
|
+
engines: {node: '>=18'}
|
|
140
|
+
cpu: [arm64]
|
|
141
|
+
os: [openbsd]
|
|
142
|
+
|
|
143
|
+
'@esbuild/openbsd-x64@0.27.7':
|
|
144
|
+
resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==}
|
|
145
|
+
engines: {node: '>=18'}
|
|
146
|
+
cpu: [x64]
|
|
147
|
+
os: [openbsd]
|
|
148
|
+
|
|
149
|
+
'@esbuild/openharmony-arm64@0.27.7':
|
|
150
|
+
resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==}
|
|
151
|
+
engines: {node: '>=18'}
|
|
152
|
+
cpu: [arm64]
|
|
153
|
+
os: [openharmony]
|
|
154
|
+
|
|
155
|
+
'@esbuild/sunos-x64@0.27.7':
|
|
156
|
+
resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==}
|
|
157
|
+
engines: {node: '>=18'}
|
|
158
|
+
cpu: [x64]
|
|
159
|
+
os: [sunos]
|
|
160
|
+
|
|
161
|
+
'@esbuild/win32-arm64@0.27.7':
|
|
162
|
+
resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==}
|
|
163
|
+
engines: {node: '>=18'}
|
|
164
|
+
cpu: [arm64]
|
|
165
|
+
os: [win32]
|
|
166
|
+
|
|
167
|
+
'@esbuild/win32-ia32@0.27.7':
|
|
168
|
+
resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==}
|
|
169
|
+
engines: {node: '>=18'}
|
|
170
|
+
cpu: [ia32]
|
|
171
|
+
os: [win32]
|
|
172
|
+
|
|
173
|
+
'@esbuild/win32-x64@0.27.7':
|
|
174
|
+
resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==}
|
|
175
|
+
engines: {node: '>=18'}
|
|
176
|
+
cpu: [x64]
|
|
177
|
+
os: [win32]
|
|
178
|
+
|
|
179
|
+
'@types/node@22.19.18':
|
|
180
|
+
resolution: {integrity: sha512-9v00a+dn2yWVsYDEunWC4g/TcRKVq3r8N5FuZp7u0SGrPvdN9c2yXI9bBuf5Fl0hNCb+QTIePTn5pJs2pwBOQQ==}
|
|
181
|
+
|
|
182
|
+
esbuild@0.27.7:
|
|
183
|
+
resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==}
|
|
184
|
+
engines: {node: '>=18'}
|
|
185
|
+
hasBin: true
|
|
186
|
+
|
|
187
|
+
fsevents@2.3.3:
|
|
188
|
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
|
189
|
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
|
190
|
+
os: [darwin]
|
|
191
|
+
|
|
192
|
+
get-tsconfig@4.14.0:
|
|
193
|
+
resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
|
|
194
|
+
|
|
195
|
+
resolve-pkg-maps@1.0.0:
|
|
196
|
+
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
|
197
|
+
|
|
198
|
+
tsx@4.21.0:
|
|
199
|
+
resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
|
|
200
|
+
engines: {node: '>=18.0.0'}
|
|
201
|
+
hasBin: true
|
|
202
|
+
|
|
203
|
+
typescript@5.9.3:
|
|
204
|
+
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
|
|
205
|
+
engines: {node: '>=14.17'}
|
|
206
|
+
hasBin: true
|
|
207
|
+
|
|
208
|
+
undici-types@6.21.0:
|
|
209
|
+
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
|
210
|
+
|
|
211
|
+
snapshots:
|
|
212
|
+
|
|
213
|
+
'@esbuild/aix-ppc64@0.27.7':
|
|
214
|
+
optional: true
|
|
215
|
+
|
|
216
|
+
'@esbuild/android-arm64@0.27.7':
|
|
217
|
+
optional: true
|
|
218
|
+
|
|
219
|
+
'@esbuild/android-arm@0.27.7':
|
|
220
|
+
optional: true
|
|
221
|
+
|
|
222
|
+
'@esbuild/android-x64@0.27.7':
|
|
223
|
+
optional: true
|
|
224
|
+
|
|
225
|
+
'@esbuild/darwin-arm64@0.27.7':
|
|
226
|
+
optional: true
|
|
227
|
+
|
|
228
|
+
'@esbuild/darwin-x64@0.27.7':
|
|
229
|
+
optional: true
|
|
230
|
+
|
|
231
|
+
'@esbuild/freebsd-arm64@0.27.7':
|
|
232
|
+
optional: true
|
|
233
|
+
|
|
234
|
+
'@esbuild/freebsd-x64@0.27.7':
|
|
235
|
+
optional: true
|
|
236
|
+
|
|
237
|
+
'@esbuild/linux-arm64@0.27.7':
|
|
238
|
+
optional: true
|
|
239
|
+
|
|
240
|
+
'@esbuild/linux-arm@0.27.7':
|
|
241
|
+
optional: true
|
|
242
|
+
|
|
243
|
+
'@esbuild/linux-ia32@0.27.7':
|
|
244
|
+
optional: true
|
|
245
|
+
|
|
246
|
+
'@esbuild/linux-loong64@0.27.7':
|
|
247
|
+
optional: true
|
|
248
|
+
|
|
249
|
+
'@esbuild/linux-mips64el@0.27.7':
|
|
250
|
+
optional: true
|
|
251
|
+
|
|
252
|
+
'@esbuild/linux-ppc64@0.27.7':
|
|
253
|
+
optional: true
|
|
254
|
+
|
|
255
|
+
'@esbuild/linux-riscv64@0.27.7':
|
|
256
|
+
optional: true
|
|
257
|
+
|
|
258
|
+
'@esbuild/linux-s390x@0.27.7':
|
|
259
|
+
optional: true
|
|
260
|
+
|
|
261
|
+
'@esbuild/linux-x64@0.27.7':
|
|
262
|
+
optional: true
|
|
263
|
+
|
|
264
|
+
'@esbuild/netbsd-arm64@0.27.7':
|
|
265
|
+
optional: true
|
|
266
|
+
|
|
267
|
+
'@esbuild/netbsd-x64@0.27.7':
|
|
268
|
+
optional: true
|
|
269
|
+
|
|
270
|
+
'@esbuild/openbsd-arm64@0.27.7':
|
|
271
|
+
optional: true
|
|
272
|
+
|
|
273
|
+
'@esbuild/openbsd-x64@0.27.7':
|
|
274
|
+
optional: true
|
|
275
|
+
|
|
276
|
+
'@esbuild/openharmony-arm64@0.27.7':
|
|
277
|
+
optional: true
|
|
278
|
+
|
|
279
|
+
'@esbuild/sunos-x64@0.27.7':
|
|
280
|
+
optional: true
|
|
281
|
+
|
|
282
|
+
'@esbuild/win32-arm64@0.27.7':
|
|
283
|
+
optional: true
|
|
284
|
+
|
|
285
|
+
'@esbuild/win32-ia32@0.27.7':
|
|
286
|
+
optional: true
|
|
287
|
+
|
|
288
|
+
'@esbuild/win32-x64@0.27.7':
|
|
289
|
+
optional: true
|
|
290
|
+
|
|
291
|
+
'@types/node@22.19.18':
|
|
292
|
+
dependencies:
|
|
293
|
+
undici-types: 6.21.0
|
|
294
|
+
|
|
295
|
+
esbuild@0.27.7:
|
|
296
|
+
optionalDependencies:
|
|
297
|
+
'@esbuild/aix-ppc64': 0.27.7
|
|
298
|
+
'@esbuild/android-arm': 0.27.7
|
|
299
|
+
'@esbuild/android-arm64': 0.27.7
|
|
300
|
+
'@esbuild/android-x64': 0.27.7
|
|
301
|
+
'@esbuild/darwin-arm64': 0.27.7
|
|
302
|
+
'@esbuild/darwin-x64': 0.27.7
|
|
303
|
+
'@esbuild/freebsd-arm64': 0.27.7
|
|
304
|
+
'@esbuild/freebsd-x64': 0.27.7
|
|
305
|
+
'@esbuild/linux-arm': 0.27.7
|
|
306
|
+
'@esbuild/linux-arm64': 0.27.7
|
|
307
|
+
'@esbuild/linux-ia32': 0.27.7
|
|
308
|
+
'@esbuild/linux-loong64': 0.27.7
|
|
309
|
+
'@esbuild/linux-mips64el': 0.27.7
|
|
310
|
+
'@esbuild/linux-ppc64': 0.27.7
|
|
311
|
+
'@esbuild/linux-riscv64': 0.27.7
|
|
312
|
+
'@esbuild/linux-s390x': 0.27.7
|
|
313
|
+
'@esbuild/linux-x64': 0.27.7
|
|
314
|
+
'@esbuild/netbsd-arm64': 0.27.7
|
|
315
|
+
'@esbuild/netbsd-x64': 0.27.7
|
|
316
|
+
'@esbuild/openbsd-arm64': 0.27.7
|
|
317
|
+
'@esbuild/openbsd-x64': 0.27.7
|
|
318
|
+
'@esbuild/openharmony-arm64': 0.27.7
|
|
319
|
+
'@esbuild/sunos-x64': 0.27.7
|
|
320
|
+
'@esbuild/win32-arm64': 0.27.7
|
|
321
|
+
'@esbuild/win32-ia32': 0.27.7
|
|
322
|
+
'@esbuild/win32-x64': 0.27.7
|
|
323
|
+
|
|
324
|
+
fsevents@2.3.3:
|
|
325
|
+
optional: true
|
|
326
|
+
|
|
327
|
+
get-tsconfig@4.14.0:
|
|
328
|
+
dependencies:
|
|
329
|
+
resolve-pkg-maps: 1.0.0
|
|
330
|
+
|
|
331
|
+
resolve-pkg-maps@1.0.0: {}
|
|
332
|
+
|
|
333
|
+
tsx@4.21.0:
|
|
334
|
+
dependencies:
|
|
335
|
+
esbuild: 0.27.7
|
|
336
|
+
get-tsconfig: 4.14.0
|
|
337
|
+
optionalDependencies:
|
|
338
|
+
fsevents: 2.3.3
|
|
339
|
+
|
|
340
|
+
typescript@5.9.3: {}
|
|
341
|
+
|
|
342
|
+
undici-types@6.21.0: {}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
## Project context
|
|
2
|
+
<bd prime output — verbatim>
|
|
3
|
+
|
|
4
|
+
## Task
|
|
5
|
+
<bd show <id> output — verbatim>
|
|
6
|
+
|
|
7
|
+
## Dependency context
|
|
8
|
+
<summary of what prior completed beads delivered, if any>
|
|
9
|
+
|
|
10
|
+
## Relevant files
|
|
11
|
+
<list source files you read during context gathering>
|
|
12
|
+
|
|
13
|
+
## Progress log
|
|
14
|
+
Write progress to: `.agent-cortex/ralph/ralph-<bead-id>.log`
|
|
15
|
+
Log stage start, test results, build errors, and stage complete (see Progress Logging in run-pipeline-stage skill).
|
|
16
|
+
|
|
17
|
+
## Instructions
|
|
18
|
+
Invoke the `style-code` skill before making any code changes.
|
|
19
|
+
|
|
20
|
+
Implement the task described above using a test-driven approach:
|
|
21
|
+
|
|
22
|
+
1. **Plan**: identify the discrete behaviors this task requires. List them before writing any code.
|
|
23
|
+
2. **Vertical slices only** — do not write all tests first. Work one behavior at a time:
|
|
24
|
+
- Write one failing test (RED)
|
|
25
|
+
- Write the minimal code to make it pass (GREEN)
|
|
26
|
+
- Refactor if needed, keeping tests green
|
|
27
|
+
- Repeat for the next behavior
|
|
28
|
+
3. **Tests must verify behavior through public interfaces** — not implementation details. A test should survive an internal refactor unchanged.
|
|
29
|
+
4. **Do not add speculative code** — only what is needed to pass the current test.
|
|
30
|
+
5. **Use context7** when working with any third-party library — fetch live docs to ensure you use the correct, up-to-date API for the version in this project.
|
|
31
|
+
|
|
32
|
+
Make only the changes required to complete this task — do not refactor unrelated code.
|
|
33
|
+
|
|
34
|
+
End your response with a ---REPORT--- block:
|
|
35
|
+
---REPORT---
|
|
36
|
+
BEAD_ID: <id>
|
|
37
|
+
STAGE_COMPLETED: coding
|
|
38
|
+
SUMMARY: <2–3 sentence summary of what was done>
|
|
39
|
+
FILES_CHANGED: <comma-separated list, or "none">
|
|
40
|
+
---
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
## Project context
|
|
2
|
+
<bd prime output — verbatim>
|
|
3
|
+
|
|
4
|
+
## Task completed
|
|
5
|
+
<bead description — verbatim>
|
|
6
|
+
|
|
7
|
+
## What was implemented
|
|
8
|
+
<SUMMARY from the final coder/fixer REPORT>
|
|
9
|
+
|
|
10
|
+
## Files changed
|
|
11
|
+
<FILES_CHANGED from the final coder/fixer REPORT>
|
|
12
|
+
|
|
13
|
+
## Progress log
|
|
14
|
+
Write progress to: `.agent-cortex/ralph/ralph-<bead-id>.log`
|
|
15
|
+
Log stage start and stage complete (see Progress Logging in run-pipeline-stage skill).
|
|
16
|
+
|
|
17
|
+
## Instructions
|
|
18
|
+
Invoke the `style-documentation` skill before making any documentation changes.
|
|
19
|
+
|
|
20
|
+
Review the changes made and compare them against the existing documentation in the repository.
|
|
21
|
+
|
|
22
|
+
1. Locate the project's `docs/` directory (or equivalent shared documentation space).
|
|
23
|
+
2. Read any existing docs relevant to the changes made.
|
|
24
|
+
3. Identify only the following worth documenting:
|
|
25
|
+
- A key decision was made (why this approach over another)
|
|
26
|
+
- Behaviour changed at a macro level (what the system now does that it didn't before)
|
|
27
|
+
- A constraint or trade-off exists that a future engineer needs to know
|
|
28
|
+
4. If any of the above apply: update the most relevant existing doc. Only create a new file
|
|
29
|
+
(`docs/decisions/<topic>.md`) if no suitable home exists.
|
|
30
|
+
5. If none of the above apply: do nothing. Leaving docs unchanged is the correct outcome
|
|
31
|
+
when no decisions or macro behaviour changed.
|
|
32
|
+
6. Do not modify source code — documentation only.
|
|
33
|
+
|
|
34
|
+
End your response with a ---REPORT--- block:
|
|
35
|
+
---REPORT---
|
|
36
|
+
BEAD_ID: <id>
|
|
37
|
+
STAGE_COMPLETED: documenting
|
|
38
|
+
SUMMARY: <2–3 sentence summary of what was documented, or "No documentation changes required">
|
|
39
|
+
FILES_CHANGED: <comma-separated list of docs touched, or "none">
|
|
40
|
+
---
|