fullstack-agentic-flow 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +348 -0
  3. package/dist/src/cli/args.js +74 -0
  4. package/dist/src/cli/commands/doctor.js +133 -0
  5. package/dist/src/cli/commands/init.js +103 -0
  6. package/dist/src/cli/commands/shared.js +20 -0
  7. package/dist/src/cli/commands/tools.js +21 -0
  8. package/dist/src/cli/commands/update.js +21 -0
  9. package/dist/src/cli/main.js +6 -0
  10. package/dist/src/cli/output.js +11 -0
  11. package/dist/src/cli/prompter.js +13 -0
  12. package/dist/src/cli/report.js +13 -0
  13. package/dist/src/cli/run.js +48 -0
  14. package/dist/src/domain/canon-mapping.js +26 -0
  15. package/dist/src/domain/claude-md-mode.js +17 -0
  16. package/dist/src/domain/enum-parse.js +9 -0
  17. package/dist/src/domain/errors.js +13 -0
  18. package/dist/src/domain/pipeline-config.js +58 -0
  19. package/dist/src/domain/runtime.js +19 -0
  20. package/dist/src/domain/tool.js +129 -0
  21. package/dist/src/domain/topology.js +39 -0
  22. package/dist/src/install/adapters.js +39 -0
  23. package/dist/src/install/applier.js +150 -0
  24. package/dist/src/install/detect.js +70 -0
  25. package/dist/src/install/managed-section.js +35 -0
  26. package/dist/src/install/manifest.js +63 -0
  27. package/dist/src/install/planned-file.js +77 -0
  28. package/dist/src/install/planner.js +139 -0
  29. package/dist/src/install/rules-preset.js +37 -0
  30. package/dist/src/install/setup-guide.js +60 -0
  31. package/dist/src/io/fs.js +39 -0
  32. package/dist/src/io/paths.js +6 -0
  33. package/dist/src/io/shell.js +25 -0
  34. package/dist/src/registry/commands.js +52 -0
  35. package/dist/src/registry/subagents.js +52 -0
  36. package/dist/src/registry/tools.js +99 -0
  37. package/package.json +53 -0
  38. package/payload/ai-agents/agents/00-bootstrap.md +473 -0
  39. package/payload/ai-agents/agents/00a-scaffold.md +295 -0
  40. package/payload/ai-agents/agents/00b-module-scaffold.md +108 -0
  41. package/payload/ai-agents/agents/01-intake.md +308 -0
  42. package/payload/ai-agents/agents/01b-impact-analysis.md +274 -0
  43. package/payload/ai-agents/agents/02a-dependency-map.md +247 -0
  44. package/payload/ai-agents/agents/02b-backend-contract.md +434 -0
  45. package/payload/ai-agents/agents/02c-ui-contract.md +367 -0
  46. package/payload/ai-agents/agents/02d-interface-seam.md +373 -0
  47. package/payload/ai-agents/agents/03a-backend-sequence.md +233 -0
  48. package/payload/ai-agents/agents/03b-ui-sequence.md +230 -0
  49. package/payload/ai-agents/agents/04a-backend-implementer.md +290 -0
  50. package/payload/ai-agents/agents/04b-ui-implementer.md +302 -0
  51. package/payload/ai-agents/agents/05-ci-validator.md +125 -0
  52. package/payload/ai-agents/agents/06-qa-spec.md +249 -0
  53. package/payload/ai-agents/agents/07-security.md +228 -0
  54. package/payload/ai-agents/agents/08-performance.md +208 -0
  55. package/payload/ai-agents/agents/09a-feature-notes.md +156 -0
  56. package/payload/ai-agents/agents/09b-release.md +111 -0
  57. package/payload/ai-agents/architecture-context.template.md +554 -0
  58. package/payload/ai-agents/archive/README.md +22 -0
  59. package/payload/ai-agents/canon/backend-canon.md +295 -0
  60. package/payload/ai-agents/canon/frontend-canon.md +47 -0
  61. package/payload/ai-agents/canon/typed-data.md +158 -0
  62. package/payload/ai-agents/observations/README.md +11 -0
  63. package/payload/ai-agents/scripts/check-test-with-change.mjs +103 -0
  64. package/payload/ai-agents/scripts/check-typed-boundaries.mjs +329 -0
  65. package/payload/ai-agents/scripts/lib/config.mjs +63 -0
  66. package/payload/ai-agents/scripts/lib/glob.mjs +40 -0
  67. package/payload/ai-agents/state/README.md +108 -0
  68. package/payload/ai-agents/state/current-stage.md +10 -0
  69. package/payload/ai-agents/templates/README.md +22 -0
  70. package/payload/ai-agents/templates/ci/github-actions.rules.yml +35 -0
  71. package/payload/ai-agents/templates/ci/gitlab-ci.rules.yml +30 -0
  72. package/payload/ai-agents/toolchain.md +214 -0
  73. package/payload/commands/bootstrap.md +17 -0
  74. package/payload/commands/contract.md +64 -0
  75. package/payload/commands/finalize.md +26 -0
  76. package/payload/commands/impact.md +25 -0
  77. package/payload/commands/implement.md +58 -0
  78. package/payload/commands/intake.md +16 -0
  79. package/payload/commands/perf.md +20 -0
  80. package/payload/commands/qa.md +15 -0
  81. package/payload/commands/release.md +22 -0
  82. package/payload/commands/resume.md +52 -0
  83. package/payload/commands/scaffold-module.md +20 -0
  84. package/payload/commands/scaffold.md +35 -0
  85. package/payload/commands/seam.md +28 -0
  86. package/payload/commands/security.md +16 -0
  87. package/payload/commands/sequence.md +22 -0
  88. package/payload/commands/status.md +37 -0
  89. package/payload/legacy/v1-checksums.json +197 -0
  90. package/payload/root/contracts-README.md +19 -0
  91. package/payload/root/pipeline-section.md +33 -0
@@ -0,0 +1,22 @@
1
+ Verify `.ai-agents/state/current-stage.md` shows `gate-1-approved`. If not, stop
2
+ and tell the user to approve the contracts at Gate 1 first.
3
+
4
+ Read the feature's **Tracks** value, then launch **in parallel**:
5
+
6
+ | Agent | Instructions | Runs when |
7
+ |-------|-------------|-----------|
8
+ | 03a backend-sequence | `.ai-agents/agents/03a-backend-sequence.md` | tracks is `backend` or `both` |
9
+ | 03b ui-sequence | `.ai-agents/agents/03b-ui-sequence.md` | tracks is `ui` or `both` |
10
+
11
+ Both emit structured output through the `output_task_sequence` tool schema
12
+ defined in their instructions. Do not accept free-text JSON — parse failures here
13
+ are silent and corrupt the plan.
14
+
15
+ Both append to `.ai-agents/state/current-plan.md` under their own headings.
16
+ Neither may overwrite the dependency map or the other's section.
17
+
18
+ There is no gate after sequencing. The human gate is the diff review after each
19
+ commit.
20
+
21
+ When both finish, tell the user to run `/implement` and name the first available
22
+ task and its track.
@@ -0,0 +1,37 @@
1
+ Print something the user can read in five seconds. Read
2
+ `.ai-agents/state/current-stage.md` and `current-plan.md`, and run the project's
3
+ version control to get recent history.
4
+
5
+ ## Format
6
+
7
+ ```
8
+ FEATURE {name} ({slug}) TRACKS {backend | ui | both}
9
+ STAGE {stage} GATE {open gate, or —}
10
+ RISK {L0–L3 — driving dimension, or "not assessed"} TOPOLOGY {from §1.1}
11
+
12
+ BACKEND ▓▓▓▓▓░░░░░ {n}/{total} next: task {n} — {title}
13
+ UI ▓▓▓░░░░░░░ {n}/{total} next: task {n} — {title} [blocked on backend {n}]
14
+
15
+ RECENT {last 5 commits on the feature branch, one line each}
16
+
17
+ TDD {n} tests logged red → green this feature
18
+ FLAGS {critical findings, blockers, unresolved seam decisions, escapes — or "none"}
19
+
20
+ NEXT {the single command to run}
21
+ NOTES {changesets waiting for release: n in .ai-agents/changes/}
22
+ ```
23
+
24
+ Omit a track's row entirely if the feature does not use it.
25
+
26
+ If no architecture context exists, print only that, plus which command comes
27
+ next: `/scaffold` when the repository is empty or holds only framework default
28
+ output, `/bootstrap` when it has real code.
29
+
30
+ If the stage is `scaffolded`, print the scaffold commits and remind the user that
31
+ reviewing the backend and UI slice files is Gate A — those become the exemplars
32
+ every future feature imitates.
33
+
34
+ If no feature is in progress, print the stage as `idle` and point at `/intake`.
35
+
36
+ Lead with flags when any exist. A blocked release matters more than progress
37
+ bars.
@@ -0,0 +1,197 @@
1
+ {
2
+ "pipelineVersion": "1.0.0",
3
+ "files": [
4
+ {
5
+ "path": ".ai-agents/agents/00-bootstrap.md",
6
+ "sha256": "2f3e7eac18ec20fe6767f8cd2bf6384f3fbe515dc9d671ed2f4e28cc054e6c85"
7
+ },
8
+ {
9
+ "path": ".ai-agents/agents/00a-scaffold.md",
10
+ "sha256": "79b473c723d3f2f6dd7c70fd7af5f91249f1f7ee438c670daf67a725b1d448ee"
11
+ },
12
+ {
13
+ "path": ".ai-agents/agents/01-intake.md",
14
+ "sha256": "51dd0e440faa4bdbe78d7aa2a3b0ed4976036eddc1cfe50ac7a985c302a6aac4"
15
+ },
16
+ {
17
+ "path": ".ai-agents/agents/02a-dependency-map.md",
18
+ "sha256": "e3de703cb82c5a5e23f8ab79e2c13a6f626322c83695c48c0d982d899b4e8433"
19
+ },
20
+ {
21
+ "path": ".ai-agents/agents/02b-backend-contract.md",
22
+ "sha256": "b7a254d006013cdbf8b092d5cefc8c96492b9d7ce67420ba560f1e313dc8f38f"
23
+ },
24
+ {
25
+ "path": ".ai-agents/agents/02c-ui-contract.md",
26
+ "sha256": "dc923be0349a20728c933eb5348b4787356c55bbef88fa72c0f76e5dfbbd9b64"
27
+ },
28
+ {
29
+ "path": ".ai-agents/agents/02d-api-seam.md",
30
+ "sha256": "c423e7a8e6681ff0af72acb38bddcbf19cf3b913ff269a19a4d90ab9f23c1789"
31
+ },
32
+ {
33
+ "path": ".ai-agents/agents/03a-backend-sequence.md",
34
+ "sha256": "ab2513b37e3172de4177827f1690c40c57b0ed91aaf3467e5d5a3161d1dc6c61"
35
+ },
36
+ {
37
+ "path": ".ai-agents/agents/03b-ui-sequence.md",
38
+ "sha256": "0b1e744a25ce638ade451a2e6a31f6101768fca8052e25ea0d1beccf330720fb"
39
+ },
40
+ {
41
+ "path": ".ai-agents/agents/04a-backend-implementer.md",
42
+ "sha256": "e409341695e802a7b0ba4c44bc4bd8d823817274113007857fa981eeaec17649"
43
+ },
44
+ {
45
+ "path": ".ai-agents/agents/04b-ui-implementer.md",
46
+ "sha256": "4bdb435cb7b13b6717dc5ea3c6279ebb904898627b232cd7558ccc5e08fd598f"
47
+ },
48
+ {
49
+ "path": ".ai-agents/agents/05-ci-validator.md",
50
+ "sha256": "ba9df6d8d09374a82e25a94f845b6f04031f7b0d32fae65944f6830619883ac8"
51
+ },
52
+ {
53
+ "path": ".ai-agents/agents/06-qa-spec.md",
54
+ "sha256": "355ffc652c40ad273f51bada47166cf4aca4b4594c9068e1cc01b2f4c6bb9530"
55
+ },
56
+ {
57
+ "path": ".ai-agents/agents/07-security.md",
58
+ "sha256": "733905a73a7692ce52737d57883f7903f864d05ac5b970b7a93dbce10b2db53a"
59
+ },
60
+ {
61
+ "path": ".ai-agents/agents/08-performance.md",
62
+ "sha256": "007f19afccc7247795a289be4d2e83dc860da15cfcfe1b6ca74ca99b3f1e061a"
63
+ },
64
+ {
65
+ "path": ".ai-agents/agents/09-changelog.md",
66
+ "sha256": "fd21d8aa74d728b0ef058a8659b2cd668e2eb79af348a3ceb3557309c17fc3cc"
67
+ },
68
+ {
69
+ "path": ".ai-agents/architecture-context.template.md",
70
+ "sha256": "995870dbf8f2d1045477e93cac576fbd7967279ed5758b9ac12f6881003dc23e"
71
+ },
72
+ {
73
+ "path": ".ai-agents/archive/README.md",
74
+ "sha256": "62c301e7409d6821cbc736705a760e3523aad98bf9491680f53d2778a7e15b69"
75
+ },
76
+ {
77
+ "path": ".ai-agents/state/README.md",
78
+ "sha256": "5643812da7396d994c88734a3bb4f419434e8ffd7f71510da543f96f66ec9c93"
79
+ },
80
+ {
81
+ "path": ".ai-agents/state/current-stage.md",
82
+ "sha256": "88c685cd71ca892facb07465f0d0afb8b5f89e52566be2f06147321f55f0d0e0"
83
+ },
84
+ {
85
+ "path": ".ai-agents/templates/README.md",
86
+ "sha256": "fbcd5d003f2e21dc4545042037262ca45466477ebd78fb617c55f06ef145cbb8"
87
+ },
88
+ {
89
+ "path": ".claude/agents/api-seam.md",
90
+ "sha256": "9766f84775d318d69ccc422d726464fe331c266f5632faefb5b7d48b81f2a3c5"
91
+ },
92
+ {
93
+ "path": ".claude/agents/backend-contract.md",
94
+ "sha256": "6a8ed62eb33f1544003d61dd8219e98a5451c64a404928f8e4620f054e728a84"
95
+ },
96
+ {
97
+ "path": ".claude/agents/backend-implementer.md",
98
+ "sha256": "38634b77a48814508f67750b05c3808e47b4964fa9e3ca04053846cf4bc96b9a"
99
+ },
100
+ {
101
+ "path": ".claude/agents/backend-sequence.md",
102
+ "sha256": "0ad71b64ec824412aef1e9851818b0c1e69f21300ac572e252a850a9c6a14e26"
103
+ },
104
+ {
105
+ "path": ".claude/agents/bootstrap.md",
106
+ "sha256": "8a278e1e0dab44e799cb5d41241d70816edc87a16c59dc32eb33d911127afbee"
107
+ },
108
+ {
109
+ "path": ".claude/agents/changelog.md",
110
+ "sha256": "0405e903816321a47f4a0536bc5e32c55bf09e0ebae932cbcd10951b8c1d70e6"
111
+ },
112
+ {
113
+ "path": ".claude/agents/dependency-map.md",
114
+ "sha256": "455e27c43df38fed8b6c4fdd48afd8e3db964fdb7500a862c1eb1a5a8e40edd1"
115
+ },
116
+ {
117
+ "path": ".claude/agents/intake.md",
118
+ "sha256": "74f90a4f5a66094c68da9875535af9d3ae5f277598e19e586f3ed95409b0e9ab"
119
+ },
120
+ {
121
+ "path": ".claude/agents/performance-review.md",
122
+ "sha256": "0bc9d2c953bbead0b55e010a2b9c660fb969e54bd4daea4f542057cd403ae828"
123
+ },
124
+ {
125
+ "path": ".claude/agents/qa-spec.md",
126
+ "sha256": "678c31146a1db230945846d54fd16784d91413b0bdc618dfe21d7b817bebb426"
127
+ },
128
+ {
129
+ "path": ".claude/agents/scaffold.md",
130
+ "sha256": "5fa89f80f02ad55d131021b7758767356bc510aedcce3b494768112f303532c8"
131
+ },
132
+ {
133
+ "path": ".claude/agents/security-review.md",
134
+ "sha256": "e2bee586b8e3aef56f28deddaba385352940943c614a5027775a4fb384dfbd1a"
135
+ },
136
+ {
137
+ "path": ".claude/agents/ui-contract.md",
138
+ "sha256": "fb8809b6262ada18b14f1e411ab6b26ee6a4b03cbbd8da447f2bdf9c848627fa"
139
+ },
140
+ {
141
+ "path": ".claude/agents/ui-implementer.md",
142
+ "sha256": "d573b37f0b4a040de48b190518f7ca4b37034843b8cecfe04d081ffb79e627a5"
143
+ },
144
+ {
145
+ "path": ".claude/agents/ui-sequence.md",
146
+ "sha256": "e003e7b7cd1bb815adeb30e846e3353231bcf1a73809989b8dbdaab9c89ded4e"
147
+ },
148
+ {
149
+ "path": ".claude/commands/bootstrap.md",
150
+ "sha256": "c06a853c9c6d6b543275a548cdb809a46b2e8343554c921c5583c5d6c0346b35"
151
+ },
152
+ {
153
+ "path": ".claude/commands/changelog.md",
154
+ "sha256": "37ca7d2dbf92c4482c71790e0a21873d014cf955c5b8a45d94c84fe502fbb632"
155
+ },
156
+ {
157
+ "path": ".claude/commands/contract.md",
158
+ "sha256": "41a3668f5f91b09aefc14fd73c81d2b6ab13467337103e69e1270136c183129d"
159
+ },
160
+ {
161
+ "path": ".claude/commands/implement.md",
162
+ "sha256": "923dbbbdca92a45ba1ae34aecc571ede340d59be6e9099325d1f140e43bb9615"
163
+ },
164
+ {
165
+ "path": ".claude/commands/intake.md",
166
+ "sha256": "d63e1b09579f50ee425ebdb1994adeafdb69f786d0a144407326ff237d84ce3f"
167
+ },
168
+ {
169
+ "path": ".claude/commands/perf.md",
170
+ "sha256": "e83cff08f98b3e153397d7ce67c5414fd7444b444084c36272cb43ec049e5291"
171
+ },
172
+ {
173
+ "path": ".claude/commands/qa.md",
174
+ "sha256": "b55b37d6b22b55a76d422f55f081665b05c2eb981fe6d5dd2bbaa1b2a6771457"
175
+ },
176
+ {
177
+ "path": ".claude/commands/resume.md",
178
+ "sha256": "dd4493ac5be7afd875af878a66591c485f871292a5677362bae87d70ecf7b347"
179
+ },
180
+ {
181
+ "path": ".claude/commands/scaffold.md",
182
+ "sha256": "b2b4429ccd03421a41f4c43dfccae5aa49421886a0dde0a266cee84a3949f062"
183
+ },
184
+ {
185
+ "path": ".claude/commands/security.md",
186
+ "sha256": "3a3e602839c98f3a7a1fbe5e3e2ac2a02d2548c857cffb3c7b8073c7e91838e4"
187
+ },
188
+ {
189
+ "path": ".claude/commands/sequence.md",
190
+ "sha256": "87d028af3bed4d17ce022d7e63f98e728291828ffe876d6412241a2d7a1a402e"
191
+ },
192
+ {
193
+ "path": ".claude/commands/status.md",
194
+ "sha256": "33c177d9cedbcdf60433237cd6f3ee6b68e7cabcb22147dbe8b0edbde581417c"
195
+ }
196
+ ]
197
+ }
@@ -0,0 +1,19 @@
1
+ # Contracts
2
+
3
+ Cross-repository interface contracts, one directory per feature slug:
4
+
5
+ ```
6
+ contracts/{slug}/
7
+ ├── seam.md the frozen seam, verbatim
8
+ ├── openapi.yaml | schema.graphql | … machine-readable fragment
9
+ └── VERSION semver, timestamp, sha256 of the files above
10
+ ```
11
+
12
+ - **Backend repositories** (`split-backend`) write these with `/seam export`
13
+ (agent 02d does it at Gate 1). They are a published interface: they stay
14
+ after the feature is released.
15
+ - **Frontend repositories** (`split-frontend`) receive them with
16
+ `/seam import {path-or-url}` and never edit them. A missing field is a
17
+ counterpart request to the backend repository.
18
+
19
+ CI verifies every `VERSION` checksum on each push.
@@ -0,0 +1,33 @@
1
+ ## Delivery pipeline (fullstack-agentic-flow)
2
+
3
+ This repository uses a gated, multi-agent delivery pipeline. Its instructions
4
+ live in `.ai-agents/`; this section only points at them.
5
+
6
+ **Before any feature work**, read in this order:
7
+
8
+ 1. `.ai-agents/architecture-context.md` — this repository's topology, canon
9
+ mapping, conventions, and rules (written by `/bootstrap`)
10
+ 2. `.ai-agents/state/current-stage.md` — where the current feature is
11
+ 3. `.ai-agents/toolchain.md` — which skills to use, and what outranks what
12
+
13
+ **Non-negotiable, in every task:**
14
+
15
+ - **Test first.** Write the test, run it, see it fail for the stated reason,
16
+ then implement. Log red → green in `.ai-agents/state/tdd-log.md`.
17
+ - **Typed data.** No untyped arrays, maps, `mixed`, or `any` across a boundary.
18
+ Named Data classes instead, even when that means many small ones
19
+ (`.ai-agents/canon/typed-data.md`).
20
+ - **Canon placement.** Backend code goes in the layer
21
+ `.ai-agents/canon/backend-canon.md` and architecture-context §5.0 say.
22
+ - **One task, one commit, then stop.** Never push; a human reviews every diff.
23
+ - **Everything happens before the merge.** Impact verification, QA, security,
24
+ performance, the release note and the archive all land on the branch. Once it
25
+ merges, the feature is done.
26
+ - **Stop rather than improvise** when a contract or the frozen seam is wrong.
27
+
28
+ **Precedence when instructions conflict:** the human at a gate → pipeline state
29
+ files → architecture context and canon → the agent file for this step →
30
+ discipline skills (superpowers, ponytail, impeccable) → memory and graph recall.
31
+ Memory and graphs are recall, never truth.
32
+
33
+ Pipeline commands: