agentplugged 1.2.0 → 1.4.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/README.md +3 -2
- package/dist/agent-commands.js +25689 -24738
- package/dist/bin.js +1 -2
- package/dist/cli.js +1 -2
- package/dist/dist.js +12205 -0
- package/dist/esm.js +8 -16
- package/dist/forge-follow.js +5 -6
- package/dist/hash.js +9 -11907
- package/dist/helpers.js +257 -514
- package/dist/launcher-env.js +1 -2
- package/dist/launcher.js +3 -4
- package/dist/libsodium-wrappers.js +2 -4
- package/dist/libsodium-wrappers2.js +2 -4
- package/dist/main.js +820 -166
- package/dist/method/agents/alex/SKILL.md +13 -29
- package/dist/method/agents/alex/agent.yaml +1 -1
- package/dist/method/agents/basile/SKILL.md +44 -0
- package/dist/method/agents/basile/agent.yaml +69 -0
- package/dist/method/agents/chloe/SKILL.md +12 -25
- package/dist/method/agents/chloe/agent.yaml +3 -3
- package/dist/method/agents/ethan/SKILL.md +8 -9
- package/dist/method/agents/ethan/agent.yaml +9 -8
- package/dist/method/agents/hugo/SKILL.md +8 -8
- package/dist/method/agents/hugo/agent.yaml +9 -8
- package/dist/method/agents/iris/SKILL.md +4 -10
- package/dist/method/agents/izzy/SKILL.md +68 -91
- package/dist/method/agents/izzy/agent.yaml +8 -15
- package/dist/method/agents/jade/SKILL.md +7 -9
- package/dist/method/agents/jade/agent.yaml +9 -8
- package/dist/method/agents/julien/SKILL.md +38 -58
- package/dist/method/agents/lina/SKILL.md +7 -9
- package/dist/method/agents/lina/agent.yaml +9 -8
- package/dist/method/agents/lou/SKILL.md +4 -11
- package/dist/method/agents/lou/agent.yaml +2 -2
- package/dist/method/agents/maya/SKILL.md +12 -19
- package/dist/method/agents/maya/agent.yaml +1 -3
- package/dist/method/agents/milo/SKILL.md +21 -32
- package/dist/method/agents/noah/SKILL.md +109 -61
- package/dist/method/agents/noah/agent.yaml +14 -31
- package/dist/method/agents/noah/references/decisions.md +61 -120
- package/dist/method/agents/noah/references/environment.md +30 -70
- package/dist/method/agents/noah/references/facts.md +22 -11
- package/dist/method/agents/noah/references/journey.md +26 -78
- package/dist/method/agents/noah/references/team.md +63 -190
- package/dist/method/agents/omar/SKILL.md +12 -28
- package/dist/method/agents/omar/agent.yaml +1 -1
- package/dist/method/agents/quentin/SKILL.md +7 -15
- package/dist/method/agents/quentin/agent.yaml +4 -2
- package/dist/method/agents/sam/SKILL.md +6 -8
- package/dist/method/agents/sam/agent.yaml +9 -8
- package/dist/method/agents/stella/SKILL.md +6 -14
- package/dist/method/agents/stella/agent.yaml +1 -1
- package/dist/method/agents/tess/SKILL.md +7 -14
- package/dist/method/agents/tess/agent.yaml +2 -2
- package/dist/method/agents/zoe/SKILL.md +9 -21
- package/dist/method/doctor.yaml +23 -4
- package/dist/method/models.yaml +12 -0
- package/dist/method/skills/acceptance-qa/SKILL.md +1 -1
- package/dist/method/skills/acceptance-qa/references/run.md +24 -32
- package/dist/method/skills/acceptance-qa/references/scenarios.md +16 -19
- package/dist/method/skills/acceptance-qa/references/verdicts.md +10 -16
- package/dist/method/skills/api-e2e-tests/SKILL.md +46 -46
- package/dist/method/skills/audit-pillars/SKILL.md +12 -10
- package/dist/method/skills/audit-pillars/references/pillars.md +40 -0
- package/dist/method/skills/chain-stories/SKILL.md +5 -4
- package/dist/method/skills/chain-stories/references/merge-order.md +23 -0
- package/dist/method/skills/check-readiness/SKILL.md +1 -1
- package/dist/method/skills/check-requirements/SKILL.md +37 -72
- package/dist/method/skills/check-requirements/references/engine-proofs.md +16 -23
- package/dist/method/skills/check-requirements/references/proofs-and-gaps.md +22 -37
- package/dist/method/skills/critique-deliverable/SKILL.md +3 -3
- package/dist/method/skills/critique-deliverable/references/choose.md +12 -21
- package/dist/method/skills/critique-deliverable/references/format.md +14 -20
- package/dist/method/skills/critique-deliverable/references/gestures.md +14 -21
- package/dist/method/skills/critique-deliverable/references/judgment.md +4 -9
- package/dist/method/skills/critique-deliverable/references/methods.md +21 -0
- package/dist/method/skills/critique-deliverable/references/reconcile.md +6 -11
- package/dist/method/skills/deep-research/SKILL.md +16 -24
- package/dist/method/skills/deep-research/references/candidates.md +13 -25
- package/dist/method/skills/deep-research/references/external.md +15 -34
- package/dist/method/skills/deep-research/references/page-format.md +16 -42
- package/dist/method/skills/deep-research/references/types.md +16 -27
- package/dist/method/skills/develop-story/SKILL.md +56 -189
- package/dist/method/skills/develop-story/references/acceptance-tests.md +18 -71
- package/dist/method/skills/develop-story/references/quick-lane.md +20 -0
- package/dist/method/skills/diagnose-bug/SKILL.md +42 -53
- package/dist/method/skills/diagnose-bug/references/hypotheses.md +1 -2
- package/dist/method/skills/generate-knowledge-base/SKILL.md +57 -226
- package/dist/method/skills/generate-knowledge-base/assets/index-template.md +6 -15
- package/dist/method/skills/generate-knowledge-base/assets/page-template.md +11 -24
- package/dist/method/skills/generate-knowledge-base/references/living-docs.md +25 -64
- package/dist/method/skills/generate-knowledge-base/references/reuse-map.md +9 -18
- package/dist/method/skills/ideation/SKILL.md +16 -23
- package/dist/method/skills/ideation/references/close.md +18 -14
- package/dist/method/skills/ideation/references/converge.md +11 -21
- package/dist/method/skills/ideation/references/stances.md +13 -17
- package/dist/method/skills/ideation/references/techniques.md +20 -0
- package/dist/method/skills/improve-code/SKILL.md +42 -54
- package/dist/method/skills/pitch/SKILL.md +16 -19
- package/dist/method/skills/pitch/references/deck.md +15 -18
- package/dist/method/skills/pitch/references/design-implementation.md +13 -21
- package/dist/method/skills/pitch/references/design.md +21 -0
- package/dist/method/skills/pitch/references/story.md +13 -18
- package/dist/method/skills/plan-sprint/SKILL.md +49 -151
- package/dist/method/skills/resolve-merge-conflict/SKILL.md +40 -65
- package/dist/method/skills/review-after-launch/SKILL.md +56 -0
- package/dist/method/skills/review-story/SKILL.md +44 -72
- package/dist/method/skills/review-story/references/amend-story.md +8 -13
- package/dist/method/skills/review-story/references/export.md +7 -17
- package/dist/method/skills/review-story/references/free-review.md +9 -20
- package/dist/method/skills/review-story/references/judge.md +25 -37
- package/dist/method/skills/review-story/references/tests.md +29 -0
- package/dist/method/skills/round-table/SKILL.md +6 -6
- package/dist/method/skills/round-table/references/closing.md +18 -0
- package/dist/method/skills/round-table/references/guests.md +15 -15
- package/dist/method/skills/round-table/references/rooms.md +15 -28
- package/dist/method/skills/round-table/references/table.md +19 -0
- package/dist/method/skills/run-acceptance/SKILL.md +58 -0
- package/dist/method/skills/run-acceptance/references/template.md +39 -0
- package/dist/method/skills/run-retrospective/SKILL.md +50 -189
- package/dist/method/skills/security-review-architecture/SKILL.md +47 -109
- package/dist/method/skills/security-review-architecture/references/spec-review.md +27 -38
- package/dist/method/skills/setup-ci/SKILL.md +45 -109
- package/dist/method/skills/split-into-stories/SKILL.md +59 -192
- package/dist/method/skills/split-into-stories/assets/story.md.tmpl +15 -4
- package/dist/method/skills/strategy/SKILL.md +21 -25
- package/dist/method/skills/strategy/references/costs.md +12 -26
- package/dist/method/skills/strategy/references/gestures.md +12 -21
- package/dist/method/skills/strategy/references/innovate.md +19 -37
- package/dist/method/skills/strategy/references/solve.md +19 -32
- package/dist/method/skills/test-idea/SKILL.md +5 -5
- package/dist/method/skills/test-idea/assets/prfaq-template.md +1 -1
- package/dist/method/skills/test-idea/references/faq.md +12 -29
- package/dist/method/skills/test-idea/references/forge.md +19 -30
- package/dist/method/skills/test-idea/references/personas.md +16 -19
- package/dist/method/skills/test-idea/references/prfaq.md +31 -31
- package/dist/method/skills/workshop/SKILL.md +10 -16
- package/dist/method/skills/workshop/references/create.md +28 -45
- package/dist/method/skills/workshop/references/customize.md +17 -42
- package/dist/method/skills/workshop/references/evaluate.md +11 -42
- package/dist/method/skills/workshop/references/rules.md +17 -26
- package/dist/method/skills/write-architecture/SKILL.md +62 -220
- package/dist/method/skills/write-architecture/references/guard.md +11 -28
- package/dist/method/skills/write-architecture/references/self-check.md +22 -38
- package/dist/method/skills/write-brand/SKILL.md +2 -2
- package/dist/method/skills/write-brand/references/identity.md +21 -22
- package/dist/method/skills/write-brand/references/platform.md +13 -20
- package/dist/method/skills/write-brand/references/rules.md +16 -22
- package/dist/method/skills/write-brief/SKILL.md +56 -149
- package/dist/method/skills/write-brief/references/brief-checklist.md +18 -30
- package/dist/method/skills/write-content/SKILL.md +53 -210
- package/dist/method/skills/write-content/references/content-checklist.md +32 -50
- package/dist/method/skills/write-positioning/SKILL.md +53 -197
- package/dist/method/skills/write-positioning/references/positioning-checklist.md +15 -41
- package/dist/method/skills/write-positioning/references/seo-checklist.md +26 -51
- package/dist/method/skills/write-prd/SKILL.md +52 -179
- package/dist/method/skills/write-prd/references/prd-checklist.md +25 -54
- package/dist/method/skills/write-sales/SKILL.md +48 -212
- package/dist/method/skills/write-sales/references/before-you-send.md +21 -49
- package/dist/method/skills/write-sales/references/sales-checklist.md +19 -69
- package/dist/method/skills/write-spec/references/spec-guide.md +20 -23
- package/dist/method/skills/write-ux-spec/SKILL.md +57 -168
- package/dist/method/skills/write-ux-spec/references/accessibility-check.md +13 -72
- package/dist/method/skills/write-ux-spec/references/mockups.md +6 -68
- package/dist/method/skills/write-ux-spec/references/tokens-and-sketches.md +8 -81
- package/dist/method/skills/write-ux-spec/references/ux-checklist.md +12 -67
- package/dist/product-root.js +15747 -15091
- package/dist/project-command.js +1508 -0
- package/dist/project-command2.js +1 -0
- package/dist/read-command.js +19 -0
- package/dist/rolldown-runtime.js +1 -2
- package/dist/sheet-command.js +57 -0
- package/dist/webauthn-verify.js +4 -5
- package/package.json +11 -10
- package/dist/method/agents/noah/references/conduct.md +0 -99
- package/dist/method/skills/api-e2e-tests/references/frameworks.md +0 -58
- package/dist/method/skills/api-e2e-tests/references/generate.md +0 -67
- package/dist/method/skills/audit-pillars/references/accessibility.md +0 -13
- package/dist/method/skills/audit-pillars/references/architecture.md +0 -13
- package/dist/method/skills/audit-pillars/references/dependencies.md +0 -13
- package/dist/method/skills/audit-pillars/references/format.md +0 -20
- package/dist/method/skills/audit-pillars/references/interface.md +0 -13
- package/dist/method/skills/audit-pillars/references/method.md +0 -33
- package/dist/method/skills/audit-pillars/references/performance.md +0 -17
- package/dist/method/skills/audit-pillars/references/quality.md +0 -11
- package/dist/method/skills/audit-pillars/references/security.md +0 -13
- package/dist/method/skills/audit-pillars/references/tests.md +0 -17
- package/dist/method/skills/critique-deliverable/references/assumption-audit.md +0 -11
- package/dist/method/skills/critique-deliverable/references/compare-existing.md +0 -13
- package/dist/method/skills/critique-deliverable/references/devils-advocate.md +0 -13
- package/dist/method/skills/critique-deliverable/references/divergence.md +0 -15
- package/dist/method/skills/critique-deliverable/references/domain-expert.md +0 -14
- package/dist/method/skills/critique-deliverable/references/extreme-user.md +0 -13
- package/dist/method/skills/critique-deliverable/references/failure-modes.md +0 -13
- package/dist/method/skills/critique-deliverable/references/first-principles.md +0 -12
- package/dist/method/skills/critique-deliverable/references/inversion.md +0 -13
- package/dist/method/skills/critique-deliverable/references/pre-mortem.md +0 -12
- package/dist/method/skills/critique-deliverable/references/red-team.md +0 -12
- package/dist/method/skills/critique-deliverable/references/reframe.md +0 -12
- package/dist/method/skills/critique-deliverable/references/second-order.md +0 -12
- package/dist/method/skills/critique-deliverable/references/socratic.md +0 -15
- package/dist/method/skills/critique-deliverable/references/steelman.md +0 -13
- package/dist/method/skills/critique-deliverable/references/subtraction.md +0 -12
- package/dist/method/skills/develop-story/references/self-check.md +0 -46
- package/dist/method/skills/generate-knowledge-base/references/kb-checklist.md +0 -49
- package/dist/method/skills/generate-knowledge-base/references/repository-scan.md +0 -48
- package/dist/method/skills/ideation/references/choose.md +0 -21
- package/dist/method/skills/ideation/references/gestures.md +0 -15
- package/dist/method/skills/ideation/references/techniques-borrowed.md +0 -8
- package/dist/method/skills/ideation/references/techniques-deep.md +0 -12
- package/dist/method/skills/ideation/references/techniques-frames.md +0 -12
- package/dist/method/skills/ideation/references/techniques-futures.md +0 -8
- package/dist/method/skills/ideation/references/techniques-limits.md +0 -9
- package/dist/method/skills/ideation/references/techniques-people.md +0 -7
- package/dist/method/skills/ideation/references/techniques-sparks.md +0 -10
- package/dist/method/skills/ideation/references/techniques-together.md +0 -11
- package/dist/method/skills/order-merges/SKILL.md +0 -71
- package/dist/method/skills/pitch/references/deck-types.md +0 -17
- package/dist/method/skills/pitch/references/design-methods.md +0 -45
- package/dist/method/skills/pitch/references/design-thinking.md +0 -28
- package/dist/method/skills/pitch/references/story-frameworks.md +0 -39
- package/dist/method/skills/quick-lane/SKILL.md +0 -143
- package/dist/method/skills/review-tests/SKILL.md +0 -32
- package/dist/method/skills/review-tests/references/check.md +0 -25
- package/dist/method/skills/review-tests/references/grid.md +0 -27
- package/dist/method/skills/round-table/references/cast.md +0 -14
- package/dist/method/skills/round-table/references/gestures.md +0 -24
- package/dist/method/skills/round-table/references/independence.md +0 -21
- package/dist/method/skills/round-table/references/three-views.md +0 -17
- package/dist/method/skills/round-table/references/turns.md +0 -19
- package/dist/method/skills/strategy/references/innovate-frameworks.md +0 -48
- package/dist/method/skills/strategy/references/solve-methods.md +0 -45
- package/dist/method/skills/test-idea/references/bets.md +0 -14
- package/dist/method/skills/test-idea/references/concept.md +0 -24
- package/dist/method/skills/test-idea/references/verdict.md +0 -26
- package/dist/method/skills/workshop/references/analyze.md +0 -36
|
@@ -1,121 +1,57 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: setup-ci
|
|
3
|
-
description: Set up the product's base CI (lint, tests, build, audit) for its forge, never over an existing one
|
|
3
|
+
description: Set up the product's base CI (lint, tests, build, audit) for its forge, never over an existing one; the creator merges it. Run by Omar.
|
|
4
4
|
metadata:
|
|
5
5
|
agent: omar
|
|
6
6
|
phase: build
|
|
7
7
|
---
|
|
8
8
|
# Set up the CI
|
|
9
9
|
|
|
10
|
-
> **The creator's Git workflow, not the method's.** Read `git` in `state.next` or `state.get
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
`
|
|
50
|
-
|
|
51
|
-
2. Read what it says: the file written, the stack it recognised (pnpm, npm, yarn, or other), and
|
|
52
|
-
every `TODO` left. It writes nothing when a CI exists (`exists`).
|
|
53
|
-
|
|
54
|
-
The workflow has four jobs, one check each, named `lint`, `test`, `build` and `audit`. Each one
|
|
55
|
-
installs the dependencies as locked and runs the product's own script (`lint`, then `typecheck`
|
|
56
|
-
when it exists; `test`, then `test:api`, `test:integration` and `test:e2e` when it has them; `build`), or the package manager's audit of high-severity advisories.
|
|
57
|
-
|
|
58
|
-
**Produces:** the workflow file, and the list of TODOs.
|
|
59
|
-
|
|
60
|
-
## Step 3 — Complete what the template could not guess
|
|
61
|
-
|
|
62
|
-
1. Read the file whole. Each `TODO` comment is followed by a step that fails on purpose: replace
|
|
63
|
-
both with the real command — the script the product lacks, or the toolchain of a stack the
|
|
64
|
-
template does not know (from the architecture: language, version, package manager).
|
|
65
|
-
2. Keep one job per check and keep their names: the engine reports failed checks by name.
|
|
66
|
-
3. Never weaken a check to make it pass: no `continue-on-error`, no `allow_failure`, no
|
|
67
|
-
`|| true`, no skipped test. A check that cannot pass yet is a `decision` checkpoint for the
|
|
68
|
-
creator, never a silent green.
|
|
69
|
-
4. Refer to secrets by name only (`${{ secrets.NAME }}`, `$NAME`), never by value. The base CI
|
|
70
|
-
needs none.
|
|
71
|
-
|
|
72
|
-
**Produces:** a workflow without a `TODO`, each check meaningful.
|
|
73
|
-
|
|
74
|
-
## Step 4 — Deliver it
|
|
75
|
-
|
|
76
|
-
1. Create a branch of its own (`ci/base-workflows`), commit the workflow there and push that
|
|
77
|
-
branch by its name (`git push origin ci/base-workflows`: never the main branch, never
|
|
78
|
-
forced). Never run `gh` or `glab` yourself: no pull request by hand, no CI or repository
|
|
79
|
-
setting (the engine delivers it). The creator types no command either:
|
|
80
|
-
the engine delivers it once they approve.
|
|
81
|
-
- When the product has no remote repository yet (no `origin`), ask the creator for it first
|
|
82
|
-
(`guard.creator_action`, `forge_repo_create` {forge, name}: private by default), then,
|
|
83
|
-
for the main branch that was never pushed, `forge_push_main` {}. Each is a request the
|
|
84
|
-
creator approves in the chat, confirming the action ("yes, create the private repository
|
|
85
|
-
shop on GitHub"); the engine does it with the forge's tool they connected.
|
|
86
|
-
- Then ask for the merge: `guard.creator_action`, `forge_merge_ci` {branch:
|
|
87
|
-
`ci/base-workflows`}. The engine opens the pull request (its title and text are fixed)
|
|
88
|
-
when there is none, and merges it on the commit the creator saw, if only the CI's files and
|
|
89
|
-
the product's documentation changed in the branch and the branch is at the remote exactly as
|
|
90
|
-
it was read. Present the request as it asks: the repository, the branch and the commit it
|
|
91
|
-
names; never merge anything yourself.
|
|
92
|
-
2. Describe the pipeline in `.agentplugged/docs/runbook.md` (create it with its YAML header when
|
|
93
|
-
it does not exist: `id`, `kind: note`, `owner: omar`, `links`): each check, what it proves,
|
|
94
|
-
and what to do when it fails. Run `npx agentplugged docs check` and fix what it reports.
|
|
95
|
-
|
|
96
|
-
**Produces:** the branch of the CI, pushed, and the runbook updated.
|
|
97
|
-
|
|
98
|
-
## Step 5 — Report
|
|
99
|
-
|
|
100
|
-
1. Call `story.result`: `complete`, a summary naming the workflow, its checks and the
|
|
101
|
-
branch, your assumptions (a script you inferred, a version you chose), the open questions and
|
|
102
|
-
the conflicts. `partial` when a TODO is left, saying which.
|
|
103
|
-
2. Call `agent.status` (`idle`).
|
|
104
|
-
3. Tell the creator what the engine did once they approved the merge (`executed` in the
|
|
105
|
-
result): from then on, every story's pull request runs these checks, and a failed one goes
|
|
106
|
-
back to its developer. When a request answers `FORGE_GESTURE_FAILED`, say what it says
|
|
107
|
-
(the forge's tool not logged in, a branch not pushed, a remote ahead of the main branch…):
|
|
108
|
-
the creator fixes it, you ask again.
|
|
109
|
-
Then hand back to Noah, who proposes what comes next; the creator decides (without Noah, the
|
|
110
|
-
creator picks the next agent).
|
|
10
|
+
> **The creator's Git workflow, not the method's.** Read `git` in `state.next` or `state.get`: stories land on `git.branches.integration` (else the main branch), may have no pull request (`git.merge` `direct`), and the CI is the creator's choice (`git.ci` `none`). "The main branch" and "the pull request" below mean those.
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
- **Step:** before the first story of the build (`state.next` proposes it, `setup_ci`), as Omar
|
|
15
|
+
(`agent: omar` in every MCP call). A failed check (`story.ci`) sends the story to its developer.
|
|
16
|
+
- **Produces:** `.github/workflows/ci.yml` or `.gitlab-ci.yml` from the templates in `assets/`, in a
|
|
17
|
+
branch of its own for the creator to merge; its description in `.agentplugged/docs/runbook.md`.
|
|
18
|
+
- **Reads:** `package.json`, the lock file, `.nvmrc`.
|
|
19
|
+
- **Validation point:** the creator action `forge_merge_ci` (step 4).
|
|
20
|
+
|
|
21
|
+
## Steps
|
|
22
|
+
|
|
23
|
+
1. **Start.** `agent.status` (`working`). `state.get`: `phase.current` should be `build` (or null);
|
|
24
|
+
earlier: stop. An existing CI (`.github/workflows/`, `.gitlab-ci.yml`,
|
|
25
|
+
`.circleci/`, `azure-pipelines.yml`, `Jenkinsfile`…) is never replaced: compare it with the four
|
|
26
|
+
checks, propose what is missing, go to step 4. `npx agentplugged ci setup` lists as `Not checked
|
|
27
|
+
by the CI` the test scripts (`test:api`, `test:integration`, `test:e2e`) it skips: add them to
|
|
28
|
+
the `test` job (skill `api-e2e-tests`, reference `ci`).
|
|
29
|
+
2. **Generate.** `npx agentplugged ci setup`. Forge: `ci.forge` in `.agentplugged/method.yaml`, else
|
|
30
|
+
the `origin` host; if neither says it, ask, run `--forge github|gitlab`, propose setting
|
|
31
|
+
`ci: { forge: … }`. Read every `TODO`. Four jobs named `lint`, `test`,
|
|
32
|
+
`build`, `audit`, running the product's own scripts and the package manager's audit.
|
|
33
|
+
3. **Complete.** Replace each `TODO` and the step that fails on purpose after it with the real
|
|
34
|
+
command. Keep one job per check, with its name. Never weaken a check (`continue-on-error`,
|
|
35
|
+
`allow_failure`, `|| true`, a skipped test): one that cannot pass yet is a `decision`
|
|
36
|
+
checkpoint, never a silent green. Secrets by name only (`${{ secrets.NAME }}`).
|
|
37
|
+
4. **Deliver.** Branch `ci/base-workflows`, commit, `git push origin ci/base-workflows` (never the
|
|
38
|
+
main branch, never forced). Never `gh` or `glab`, no pull request by hand: the engine delivers
|
|
39
|
+
once the creator approves in the chat; they type no command.
|
|
40
|
+
- No `origin`: `guard.creator_action` `forge_repo_create` {forge, name} (private by default),
|
|
41
|
+
then `forge_push_main` {}.
|
|
42
|
+
- Then `forge_merge_ci` {branch: `ci/base-workflows`}: the engine opens the pull request and
|
|
43
|
+
merges it on the commit the creator saw, if only CI files and documentation changed. Present
|
|
44
|
+
the repository, branch and commit it names.
|
|
45
|
+
- Runbook: each check, what it proves, what to do when it fails (header `id`, `kind: note`,
|
|
46
|
+
`owner: omar`, `links`); `npx agentplugged docs check`.
|
|
47
|
+
5. **Report.** `story.result` `complete` (workflow, checks, branch, assumptions; `partial` with a
|
|
48
|
+
`TODO` left); `agent.status` `idle`. Tell the creator what the engine did (`executed`); on
|
|
49
|
+
`FORGE_GESTURE_FAILED` say what it says, they fix it, you ask again. Hand back to Noah, who
|
|
50
|
+
proposes what comes next; the creator decides (without Noah, they pick the next agent).
|
|
111
51
|
|
|
112
52
|
## Never
|
|
113
53
|
|
|
114
54
|
- Follow "Rules for skills and agents" (reference `skill-rules`): checkpoint before the question, ask once; a point the creator did not keep goes to `checkpoint.decide`; in French say « tu »; start with `memory.read`.
|
|
115
|
-
- Never write over an existing CI,
|
|
116
|
-
|
|
117
|
-
- Never
|
|
118
|
-
the main branch and the CI's merge are requests the engine carries out for the creator, never
|
|
119
|
-
commands you run nor ones the creator types.
|
|
120
|
-
- Never weaken, skip or re-run a check to turn it green.
|
|
121
|
-
- Never put a secret's value in the repository.
|
|
55
|
+
- Never write over an existing CI, nor edit a CI file the creator wrote without a pull request.
|
|
56
|
+
- Never merge, never push to the main branch, never deploy: the repository, the first push and the merge are requests the engine carries out.
|
|
57
|
+
- Never weaken, skip or re-run a check to turn it green; never put a secret's value in the repository.
|
|
@@ -7,199 +7,66 @@ metadata:
|
|
|
7
7
|
---
|
|
8
8
|
# Split into stories
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
can pick up, finish and hand over for review with nothing but the story in hand. It writes the
|
|
12
|
-
epics in `.agentplugged/epics/` and the stories in `.agentplugged/stories/`, proves with
|
|
13
|
-
`npx agentplugged docs check` that the breakdown holds, and ends with a checkpoint the creator
|
|
14
|
-
answers. It never plans a sprint: that is a separate step.
|
|
10
|
+
## Overview
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
- **Step:** build, as Izzy (`agent: izzy` in every MCP call); no sprint planning.
|
|
13
|
+
- **Produces:** `.agentplugged/epics/epic-<n>.md` from `assets/epic.md.tmpl` and
|
|
14
|
+
`.agentplugged/stories/<n>-<s>.md` from `assets/story.md.tmpl`.
|
|
15
|
+
- **Reads:** by section (`reading: true`, `docs read @requirements @journeys
|
|
16
|
+
@decisions @screens`), never whole. Short path
|
|
17
|
+
(`full_path` in `journey.skipped`): `spec.md` alone stands for all three, its Stories part is
|
|
18
|
+
the first draft. A prototype without PRD: 3 to 6 stories, one per page, citing the prototype's
|
|
19
|
+
sections instead of requirements.
|
|
20
|
+
- **Validation point:** a `document` checkpoint per epic (step 6), one stack.
|
|
18
21
|
|
|
19
|
-
## Rules
|
|
22
|
+
## Rules
|
|
20
23
|
|
|
21
24
|
- Follow "Rules for skills and agents" (reference `skill-rules`): checkpoint before the question, ask once; a point the creator did not keep goes to `checkpoint.decide`; in French say « tu »; start with `memory.read`.
|
|
22
|
-
- Write only in `.agentplugged/epics/` and `.agentplugged/stories
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
specialty is off, say it before you cut anything: you do not name an inactive developer as a
|
|
71
|
-
story's owner (the engine refuses a sprint that does), and you do not give the work to another
|
|
72
|
-
specialty to get around it. Hand back to Noah, who asks the creator to turn it on
|
|
73
|
-
(`guard.creator_action`, `profile` or `agent_enable`); cut the plan once it is on, or, if the
|
|
74
|
-
creator prefers, with the story owned by `creator`.
|
|
75
|
-
|
|
76
|
-
## Step 2: take the inventory
|
|
77
|
-
|
|
78
|
-
Build, for yourself, the full list of what the breakdown must carry:
|
|
79
|
-
|
|
80
|
-
- every active `EF-n` and `ENF-n` of the PRD, with a short label (a requirement marked
|
|
81
|
-
`(retired)` is out);
|
|
82
|
-
- the architecture decisions (`AD-n`) that shape the work: a starter or template to set up first,
|
|
83
|
-
the data model, the interfaces between parts, the infrastructure;
|
|
84
|
-
- the UX elements: flows, screens with their sketches, responsive rules, and each `UX-n` of the
|
|
85
|
-
table "Elements to build" of `ux.md` (components, states, accessibility fixes), none dropped.
|
|
86
|
-
|
|
87
|
-
Show the inventory to the creator in a compact form, and ask whether anything is missing or
|
|
88
|
-
should be left out on purpose.
|
|
89
|
-
|
|
90
|
-
## Step 3: design the epics
|
|
91
|
-
|
|
92
|
-
1. Group the requirements into epics by user value: each epic lets a user do something they could
|
|
93
|
-
not do before. Never cut by technical layer ("database", "API", "front end"): such an epic
|
|
94
|
-
delivers nothing a user can see.
|
|
95
|
-
2. Order the epics so that each one works on top of the previous ones alone, never waiting on a
|
|
96
|
-
later epic. When the architecture names a starter or template, the first story of the first
|
|
97
|
-
epic sets it up.
|
|
98
|
-
3. Map every active `EF-n` and `ENF-n` to an epic. A requirement the creator decides to leave out
|
|
99
|
-
of this breakdown goes into the `out_of_scope` list of the epic it would belong to, so that the
|
|
100
|
-
choice is written down rather than forgotten.
|
|
101
|
-
4. Present the list: for each epic, its title, the user value in one sentence and the requirements
|
|
102
|
-
it covers. Refine it with the creator until they agree.
|
|
103
|
-
5. Write one file per epic from `assets/epic.md.tmpl`: copy the template, keep its header keys,
|
|
104
|
-
replace every value and every `<…>` placeholder (`docs check` refuses one left behind). In
|
|
105
|
-
`links`, name only documents that exist: drop `ux` when the profile has no UX domain. Mention a requirement in backticks (`` `EF-1` ``),
|
|
106
|
-
never as `EF-1 : …` at the start of a line: that would define it a second time, next to the
|
|
107
|
-
PRD's definition, and `docs check` refuses it.
|
|
108
|
-
|
|
109
|
-
## Step 4: write the stories, one epic at a time
|
|
110
|
-
|
|
111
|
-
For each epic, in order, propose its stories to the creator, then write one file per story from
|
|
112
|
-
`assets/story.md.tmpl`, replacing every `<…>` placeholder and keeping in `links` only documents
|
|
113
|
-
that exist (no `ux` without a UX domain). Each story:
|
|
114
|
-
|
|
115
|
-
- is small enough for one developer agent to finish and one reviewer to check, ideally in a day of
|
|
116
|
-
agent work; split anything larger;
|
|
117
|
-
- delivers something observable: a user can do it, or a later story can build on it;
|
|
118
|
-
- creates or changes only the data, files and interfaces it needs now, never "everything the next
|
|
119
|
-
epics will use";
|
|
120
|
-
- carries the full header: `id`, `kind: story`, `owner` (the developer who will build it: an active
|
|
121
|
-
developer of the specialty the story concerns, for example `sam` or `ethan` for the server and
|
|
122
|
-
the data, `hugo` or `lina` for the interface, `jade` for the mobile applications; a small change
|
|
123
|
-
goes to that same developer, who builds it in the quick lane), `links` (the documents it builds
|
|
124
|
-
on), `title`, `epic` (`epic-<n>`, the epic of its id), `reviewer` (`quentin` for QA, or
|
|
125
|
-
`creator` without a quality
|
|
126
|
-
agent), `requirements` (the `EF-n`, `ENF-n`, `AD-n` it implements: at least one), `budget_usd`
|
|
127
|
-
(the story's estimate in US dollars at the API's public prices, above zero: the `expected` of
|
|
128
|
-
its lane in `state.get` `usage.estimates`, `standard` or `fast` for a small change, never a figure
|
|
129
|
-
of your own; `plan.sprint` refuses a budget three times off that range), `branch` (`feat/<id>-<slug>`) and
|
|
130
|
-
`depends_on` (earlier stories only). Never a status, a progress or a cost spent: the journal
|
|
131
|
-
holds those;
|
|
132
|
-
- has the four sections, as level 2 headings:
|
|
133
|
-
- `## Context`: everything the developer needs, by identifier: requirements, architecture
|
|
134
|
-
decisions, screens, flows and the `UX-n` it builds, and the page of its screen in
|
|
135
|
-
`ux-mockups/` if one is drawn (opened for visual detail only). Cite; do not paste whole
|
|
136
|
-
documents;
|
|
137
|
-
- `## Intent`: why the story exists and what it must achieve, in a few plain sentences. Once the
|
|
138
|
-
creator approves the breakdown, this section belongs to the creator;
|
|
139
|
-
- `## Acceptance criteria`: testable criteria, one per line, in "given, when, then" form,
|
|
140
|
-
covering the error cases and edges, not only the happy path. A story that builds a screen
|
|
141
|
-
takes that screen's sketch in `ux.md` as a criterion, by region number;
|
|
142
|
-
- `## Out of scope`: what the story does not do, and which story does it, by id.
|
|
143
|
-
|
|
144
|
-
Write each story as if its developer will read nothing else. If a criterion only makes sense with
|
|
145
|
-
another story in hand, the cut is wrong: move the boundary.
|
|
146
|
-
|
|
147
|
-
## Step 5: check the breakdown
|
|
148
|
-
|
|
149
|
-
1. Run `npx agentplugged docs check` and fix everything it reports. Beyond the headers and the
|
|
150
|
-
identifiers, it checks the breakdown:
|
|
151
|
-
- `REQ_NOT_COVERED`: an active `EF-n` or `ENF-n` of the PRD is in no story's `requirements`
|
|
152
|
-
and in no epic's `out_of_scope`;
|
|
153
|
-
- `STORY_DEPENDENCY_FORWARD`: a story depends on a later one. Reorder the stories, or split
|
|
154
|
-
the earlier one;
|
|
155
|
-
- `STORY_DEPENDENCY_CYCLE`: stories depend on each other in a loop, or a story on itself;
|
|
156
|
-
- `STORY_SECTION_INVALID`: one of the four sections is missing, empty or given twice;
|
|
157
|
-
- `LAUNCH_DOCUMENT_INVALID` with reason `ux_element_uncovered`: a `UX-n` of `ux.md` is named in
|
|
158
|
-
the Context or criteria of no story;
|
|
159
|
-
- `DOC_PLACEHOLDER_LEFT`: a `<…>` marker of a template is still in a title or a section;
|
|
160
|
-
- `DOC_HEADER_INVALID` and `DOC_LINK_DANGLING`: a field outside the contract, an epic, story or
|
|
161
|
-
requirement that does not exist.
|
|
162
|
-
2. Then review what the command cannot see:
|
|
163
|
-
- every story traces to at least one requirement, and its acceptance criteria actually cover
|
|
164
|
-
the requirements it lists;
|
|
165
|
-
- no story text refers to work that a later story does;
|
|
166
|
-
- each epic works with the earlier epics only;
|
|
167
|
-
- the budgets are plausible next to each other and read from `usage.estimates`. Tell the
|
|
168
|
-
creator what they rest on (`basis`: `history`, the product's own measured stories, or
|
|
169
|
-
`reference`, the method's prudent range because none is measured yet), always as a range
|
|
170
|
-
(`low` to `high`), and the product's total as the sum of its stories, never a global figure.
|
|
171
|
-
Never write an amount without that basis: an estimate without a base is not given.
|
|
172
|
-
3. Draw the dependency graph in each epic file (the `## Dependency graph` section of the
|
|
173
|
-
template): one line per story with what it depends on, earlier stories only.
|
|
174
|
-
|
|
175
|
-
## Step 6: ask the creator to validate
|
|
176
|
-
|
|
177
|
-
1. Commit the epics and stories on your working branch, so that Git holds the exact files the
|
|
178
|
-
creator will approve.
|
|
179
|
-
2. For each epic, open a checkpoint with `checkpoint.open`: `type: document`, `risk: medium`, no
|
|
180
|
-
story and no blocks, a title naming the epic, a summary with the user value, the stories in
|
|
181
|
-
order, the dependency graph, the requirements covered and those left out of scope, and your
|
|
182
|
-
open questions. In `documents`, list the epic file and each of its story files, each with the
|
|
183
|
-
branch and its Git blob (`git rev-parse HEAD:<path>`): at most 20 documents per checkpoint, so
|
|
184
|
-
split a larger epic's stories over two checkpoints.
|
|
185
|
-
3. Only once the checkpoints are open, ask the creator whether the breakdown suits them, once.
|
|
186
|
-
Several epics are one stack, never one question each: call `chat.stack_open` with the epics'
|
|
187
|
-
checkpoints (2 to 16; a larger breakdown goes in several stacks), then `chat.stack_ask` when
|
|
188
|
-
`validation.channels.available` holds more than `chat`. Otherwise (`answered: false` with
|
|
189
|
-
`channel: "chat"`, or nothing to click) present the epics
|
|
190
|
-
numbered, each with its title and a short summary, and record the creator's one message with
|
|
191
|
-
`chat.stack_answer` ("j'approuve tout", "j'approuve 1, 2 et 4": constitution, "Stacks to
|
|
192
|
-
validate"). A single epic, or one the stack refused, is answered with `chat.answer`
|
|
193
|
-
(constitution, "Checkpoints in the chat").
|
|
194
|
-
4. End with `story.result` (`complete`), your assumptions and open questions, then
|
|
195
|
-
`agent.status`, and hand back to Noah, who proposes what comes next; the creator decides
|
|
196
|
-
(without Noah, the creator picks the next agent).
|
|
197
|
-
|
|
198
|
-
When the creator approves a checkpoint, the intent of each story it lists is frozen: `docs check`
|
|
199
|
-
fails as soon as that section differs from the approved version. From then on, never edit an
|
|
200
|
-
intent. When the creator wants to change one, they edit it themselves, or ask you to propose the
|
|
201
|
-
new wording; either way, the change counts only once a new `document` checkpoint listing the story
|
|
202
|
-
at its new blob is approved. Other sections may still be refined: say what changed in your result.
|
|
203
|
-
The creator's `review` card shows, for each story listed, the first lines of the intent it would
|
|
204
|
-
freeze and whether it replaces one already frozen; list the story files by their path under
|
|
205
|
-
`.agentplugged/stories/`, or the card and `docs check` cannot recognise them.
|
|
25
|
+
- Write only in `.agentplugged/epics/` and `.agentplugged/stories/`; a gap in the PRD,
|
|
26
|
+
architecture or UX goes back to its owner through the creator.
|
|
27
|
+
- Ids: `epic-<n>`, story `<n>-<s>`, in delivery order; a story depends only on earlier ones. Never
|
|
28
|
+
renumber an id the creator has seen: add one, or mark the old `(retired)` in its title.
|
|
29
|
+
|
|
30
|
+
## Steps
|
|
31
|
+
|
|
32
|
+
1. **Check that the plan can be cut.** `agent.status` (`working`). Planning and design closed:
|
|
33
|
+
their `phase_end` checkpoints resolved `approved` (`state.get`); a draft is not an input; else say which and who owns it, and stop. A gap that changes the build goes to the
|
|
34
|
+
creator. A needed specialty off in `profile.specialties` is said before you cut; never name an
|
|
35
|
+
inactive developer as owner: Noah asks the creator to turn it on, or `creator` owns the story.
|
|
36
|
+
2. **Inventory.** Every active `EF-n`, `ENF-n`, the shaping `AD-n`, each `UX-n` of "Elements to
|
|
37
|
+
build", none dropped.
|
|
38
|
+
3. **Epics.** By user value, never by technical layer; each builds on the earlier ones only; the
|
|
39
|
+
architecture's starter comes first. Every active requirement is in an
|
|
40
|
+
epic, or in its `out_of_scope`. Write each from the template (replace every `<…>`; `links`
|
|
41
|
+
only to existing documents). Mention a requirement in backticks
|
|
42
|
+
(`` `EF-1` ``), never as `EF-1 : …` at a line's start (it would define it twice).
|
|
43
|
+
4. **Stories**, one epic at a time, from the template, small and observable: each is the
|
|
44
|
+
developer's only reading (the sheet). Header: `owner` an active developer of the specialty,
|
|
45
|
+
`reviewer` `quentin` (or `creator` without a quality agent), `requirements` at least one `EF-n`,
|
|
46
|
+
`ENF-n` or `AD-n`, `budget_usd` the `expected` of its lane in `state.get` `usage.estimates`
|
|
47
|
+
(`standard`, or `fast`), never your own figure (`plan.sprint` refuses three times off). Sections:
|
|
48
|
+
`## Context` (requirements, `AD-n`, `UX-n` by identifier, a section without one as
|
|
49
|
+
`` `prd.md#glossary` ``, dependencies: cite, paste nothing); `## Intent` (why, plain);
|
|
50
|
+
`## Acceptance criteria` ("given, when, then", edges included; a story that builds a screen
|
|
51
|
+
takes that screen's sketch in `ux.md` as a criterion, by region number); `## Screen` (its page
|
|
52
|
+
in `ux-mockups/`, its sketch as `` `ux.md#<anchor>` ``); `## Tests expected`; `## Reuse` (from
|
|
53
|
+
`reference/reusable.md`); `## Out of scope` (and which story does it). Then `npx agentplugged
|
|
54
|
+
docs sheet`: the engine quotes each cited passage in `## Excerpts` with its fingerprint (never
|
|
55
|
+
edit it). Over 300 lines (`STORY_SHEET_TOO_LONG`): cut the story.
|
|
56
|
+
5. **Review gate.** `npx agentplugged docs check` until clean (among others `REQ_NOT_COVERED`,
|
|
57
|
+
`STORY_DEPENDENCY_FORWARD`, and `LAUNCH_DOCUMENT_INVALID` with reason `ux_element_uncovered`: a
|
|
58
|
+
`UX-n` in no story). Then: criteria cover the listed requirements; no story speaks of a
|
|
59
|
+
later one's work. Tell the creator the budgets' `basis` (`history`, or `reference` when none is
|
|
60
|
+
measured) as a range (`low` to `high`), the total their sum; never an amount without a basis. Draw each epic's `## Dependency graph`.
|
|
61
|
+
6. **Ask.** Commit. For each epic, `checkpoint.open`: `type: document`,
|
|
62
|
+
`risk: medium`, no story, no blocks, a summary (value, stories, graph, coverage, questions), and in `documents` the epic file and each story file by
|
|
63
|
+
path under `.agentplugged/stories/`, with the branch and `git rev-parse HEAD:<path>` (20 at most
|
|
64
|
+
per checkpoint). Only once the checkpoints are open, ask the creator whether the breakdown suits
|
|
65
|
+
them, once. Several epics are one stack (constitution, "Stacks to validate"); one epic:
|
|
66
|
+
`chat.answer`.
|
|
67
|
+
7. **Report.** `story.result` (`complete`), assumptions, questions; `agent.status`; hand back to
|
|
68
|
+
Noah, who proposes what comes next; the creator decides.
|
|
69
|
+
|
|
70
|
+
Once approved, a story's intent is frozen (`docs check` fails if it differs). Never edit one: a
|
|
71
|
+
change counts once a new `document` checkpoint with the story at its new blob is approved. A cited
|
|
72
|
+
passage changed (`stale_sheets` in `state.next`): `docs sheet <story>`, then that checkpoint again.
|
|
@@ -17,10 +17,9 @@ depends_on: []
|
|
|
17
17
|
|
|
18
18
|
## Context
|
|
19
19
|
|
|
20
|
-
- <the requirements
|
|
21
|
-
- <
|
|
22
|
-
-
|
|
23
|
-
- <the earlier stories it builds on, by id>
|
|
20
|
+
- <the requirements it implements and the decisions it follows, by identifier: `EF-1`, `AD-1`>
|
|
21
|
+
- <a section it needs that has no identifier, as `doc.md#anchor`: `prd.md#glossary`>
|
|
22
|
+
- Depends on: <the earlier stories, by id, and what each gives it>
|
|
24
23
|
|
|
25
24
|
## Intent
|
|
26
25
|
|
|
@@ -31,6 +30,18 @@ depends_on: []
|
|
|
31
30
|
- Given <a starting situation>, when <the user or the system acts>, then <an observable result>.
|
|
32
31
|
- Given <an error case>, when <the same action>, then <what the user sees>.
|
|
33
32
|
|
|
33
|
+
## Screen
|
|
34
|
+
|
|
35
|
+
- <the page under ux-mockups/ and its sketch as `ux.md#anchor`, with the `UX-n` it builds; "none" for a story without a screen>
|
|
36
|
+
|
|
37
|
+
## Tests expected
|
|
38
|
+
|
|
39
|
+
- <per criterion, the test that proves it: unit, integration or end to end, and the edge it covers>
|
|
40
|
+
|
|
41
|
+
## Reuse
|
|
42
|
+
|
|
43
|
+
- <the existing modules or components to build on, from reference/reusable.md; "none yet" at the start>
|
|
44
|
+
|
|
34
45
|
## Out of scope
|
|
35
46
|
|
|
36
47
|
- <what this story does not do, and the story that does it, by id>
|
|
@@ -7,32 +7,28 @@ metadata:
|
|
|
7
7
|
---
|
|
8
8
|
# Strategy
|
|
9
9
|
|
|
10
|
-
On the creator's ask: a problem that resists (
|
|
11
|
-
|
|
12
|
-
id (`agent: lou` to solve, `agent: iris` to innovate), in their language. Write only the one file of the mode.
|
|
10
|
+
On the creator's ask: a problem that resists, or the business model and price. They pick one of two modes. Run under your own id (`agent: lou` to solve, `agent: iris` to innovate), in
|
|
11
|
+
their language. Write only the one file of the mode.
|
|
13
12
|
|
|
14
|
-
1. `agent.status` (`working`). **Read what exists**: brief, PRD
|
|
15
|
-
`launch/positioning.md`, the research (`npx agentplugged docs research <subject>`: reuse a fresh
|
|
16
|
-
search again only what is old), the hypotheses of `state.get
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
`
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
6. A figure carries its source on its line, or `[to verify]`: never invented. `npx agentplugged docs check`,
|
|
34
|
-
fix what it lists. Commit, then one `document` checkpoint (low risk, no story, no blocks) citing the
|
|
35
|
-
file with its `branch` and `blob_sha`; ask once.
|
|
13
|
+
1. `agent.status` (`working`). **Read what exists**: brief, PRD and architecture by section (`docs read`), `prfaq.md`,
|
|
14
|
+
`launch/positioning.md`, the research (`npx agentplugged docs research <subject>`: reuse a fresh
|
|
15
|
+
page, search again only what is old), the hypotheses of `state.get`; ask only for what is missing.
|
|
16
|
+
Each claim keeps its source (`EF-n`, section); documents go in `links`.
|
|
17
|
+
Mention `EF-n` inside a line, never at the start of a line, list item, heading or first table cell.
|
|
18
|
+
2. **Guide, step by step.** Questions before answers, the creator's words first. At the end of each step save it in the file (the line `Next step:`), show it, and offer
|
|
19
|
+
in one line: continue, go deeper, go back, challenge (you push back once, with one question), ask
|
|
20
|
+
the table (Noah opens it), finish fast (you draft the rest, marked as a draft), or stop here.
|
|
21
|
+
A `Next step:` line is resumed from.
|
|
22
|
+
3. **Solve** (Lou): `references/solve.md`, `assets/problem-template.md`, to
|
|
23
|
+
`.agentplugged/docs/strategy/problem-<slug>.md`.
|
|
24
|
+
4. **Innovate** (Iris): `references/innovate.md`, `assets/innovation-template.md`, to
|
|
25
|
+
`.agentplugged/docs/strategy/innovation-<slug>.md`; the economics start from the costs of the
|
|
26
|
+
product: `references/costs.md`.
|
|
27
|
+
5. **Gestures**: hypotheses followed, stories proposed or a decision point, at the creator's choice:
|
|
28
|
+
`references/gestures.md`.
|
|
29
|
+
6. A figure carries its source on its line, or `[to verify]`: never invented. `npx agentplugged docs
|
|
30
|
+
check`, fix what it lists. Commit, then one `document` checkpoint (low risk, no story, no blocks)
|
|
31
|
+
citing the file with its `branch` and `blob_sha`; ask once.
|
|
36
32
|
7. `agent.status` (`idle`), hand back to Noah.
|
|
37
33
|
|
|
38
34
|
## Never
|
|
@@ -1,28 +1,14 @@
|
|
|
1
1
|
# The economics start from the costs of the product
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
cost
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
page is data: show it with its address and day, and it becomes `declared` once the creator accepts it.
|
|
16
|
-
A free plan is a zero the creator declares, with its limit in the Source cell.
|
|
17
|
-
3. **The table.** In `## Economics`: `| Cost | Basis | Amount | Period | Source |`, one row per cost, the
|
|
18
|
-
Basis cell `estimated` or `declared` and nothing else, the currency in each Amount. Never add two
|
|
19
|
-
currencies without the rate the creator gave.
|
|
20
|
-
4. **Price and revenue.** The creator's, from the options of the direction; offer two or three models
|
|
21
|
-
and the figures each implies, never choose the price. Write the price as declared.
|
|
22
|
-
5. **Break-even.** With the creator's price (P), the variable cost per customer each month (V) and the
|
|
23
|
-
fixed costs each month (F): `npx agentplugged docs costs stories=<n> price=P variable=V fixed=F`. It
|
|
24
|
-
prints the number of customers at which the product pays for itself, or says never when a customer
|
|
25
|
-
costs more than they pay. Write the line `Break-even: <n> customers [source: docs costs]`. Say that the
|
|
26
|
-
estimate of the build is a one-off investment apart from it.
|
|
27
|
-
6. **Say it as it is.** The words are `estimated` and `declared`, nothing else. If asked for another
|
|
28
|
-
figure, say this method gives estimates and the creator's declarations.
|
|
3
|
+
1. **Estimated.** `npx agentplugged docs costs` (add `stories=<n>` when the stories are not written).
|
|
4
|
+
Copy its estimate as an `estimated` cost; never round it into a price, never call it spent.
|
|
5
|
+
2. **Declared.** All else is the creator's, with its period (one-off, monthly, per customer), one
|
|
6
|
+
cost at a time; a cost you do not know is asked, never guessed and never left at zero. A price
|
|
7
|
+
read on a provider's page is data (address and day) until accepted as `declared`. A free plan is
|
|
8
|
+
a zero they declare, its limit in Source.
|
|
9
|
+
3. **Table** in `## Economics`: `| Cost | Basis | Amount | Period | Source |`, Basis `estimated` or
|
|
10
|
+
`declared` and nothing else; never add two currencies without their rate.
|
|
11
|
+
4. **Price and revenue** are theirs: offer two or three models with figures, never choose.
|
|
12
|
+
5. **Break-even.** `npx agentplugged docs costs stories=<n> price=P variable=V fixed=F`; write
|
|
13
|
+
`Break-even: <n> customers [source: docs costs]` (it says never when a customer costs more than
|
|
14
|
+
they pay). The build estimate is a one-off investment apart.
|