formwork-kit 0.1.0__py3-none-any.whl

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 (137) hide show
  1. formwork_cli/__init__.py +326 -0
  2. formwork_cli/kit/COSTS.md +111 -0
  3. formwork_cli/kit/adapters/claude-code/README.md +53 -0
  4. formwork_cli/kit/adapters/claude-code/settings.json +46 -0
  5. formwork_cli/kit/adapters/codex/README.md +43 -0
  6. formwork_cli/kit/adapters/cursor/README.md +45 -0
  7. formwork_cli/kit/adapters/gemini-cli/README.md +47 -0
  8. formwork_cli/kit/build +410 -0
  9. formwork_cli/kit/check/checks/config-shape +123 -0
  10. formwork_cli/kit/check/checks/decision-ids +159 -0
  11. formwork_cli/kit/check/checks/doc-links +133 -0
  12. formwork_cli/kit/check/checks/generated-current +74 -0
  13. formwork_cli/kit/check/checks/guard-wired +139 -0
  14. formwork_cli/kit/check/checks/kit-integrity +199 -0
  15. formwork_cli/kit/check/checks/predictions-first +127 -0
  16. formwork_cli/kit/check/checks/role-shape +172 -0
  17. formwork_cli/kit/check/checks/rule-labels +135 -0
  18. formwork_cli/kit/check/fixtures/config-shape/must-fail/documents-a-section-that-does-not-exist/.formwork.toml +5 -0
  19. formwork_cli/kit/check/fixtures/config-shape/must-fail/documents-a-section-that-does-not-exist/formwork/guide.md +13 -0
  20. formwork_cli/kit/check/fixtures/config-shape/must-fail/rules-as-a-switchboard/.formwork.toml +8 -0
  21. formwork_cli/kit/check/fixtures/config-shape/must-pass/layers-kept-apart/.formwork.toml +5 -0
  22. formwork_cli/kit/check/fixtures/decision-ids/must-fail/a-placeholder-shipped/docs/decisions/0003-still-pending.md +7 -0
  23. formwork_cli/kit/check/fixtures/decision-ids/must-fail/superseded-by-nothing/docs/decisions/0002-old.md +6 -0
  24. formwork_cli/kit/check/fixtures/decision-ids/must-fail/two-decisions-one-number/docs/decisions/0007-first.md +6 -0
  25. formwork_cli/kit/check/fixtures/decision-ids/must-fail/two-decisions-one-number/docs/decisions/0007-second.md +6 -0
  26. formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0001-the-first.md +6 -0
  27. formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0002-the-second.md +6 -0
  28. formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0003-the-third.md +6 -0
  29. formwork_cli/kit/check/fixtures/decision-ids/must-pass/nothing-recorded-yet/docs/decisions/README.md +3 -0
  30. formwork_cli/kit/check/fixtures/doc-links/must-fail/never-written/index.md +7 -0
  31. formwork_cli/kit/check/fixtures/doc-links/must-fail/renamed-file/architecture-notes.md +3 -0
  32. formwork_cli/kit/check/fixtures/doc-links/must-fail/renamed-file/guide.md +8 -0
  33. formwork_cli/kit/check/fixtures/doc-links/must-pass/links-resolve/architecture-notes.md +1 -0
  34. formwork_cli/kit/check/fixtures/doc-links/must-pass/links-resolve/guide.md +5 -0
  35. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.claude/agents/sample.md +22 -0
  36. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.codex/agents/sample.toml +22 -0
  37. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.formwork.toml +1 -0
  38. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.gemini/agents/sample.md +23 -0
  39. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/formwork/build +349 -0
  40. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/formwork/roles/method/sample.md +18 -0
  41. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.claude/agents/sample.md +20 -0
  42. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.codex/agents/sample.toml +22 -0
  43. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.formwork.toml +1 -0
  44. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.gemini/agents/sample.md +23 -0
  45. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/formwork/build +349 -0
  46. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/formwork/roles/method/sample.md +18 -0
  47. formwork_cli/kit/check/fixtures/generated-current/must-pass/nothing-is-generated-here/README.md +3 -0
  48. formwork_cli/kit/check/fixtures/guard-wired/must-fail/declared-but-no-file/.formwork.toml +1 -0
  49. formwork_cli/kit/check/fixtures/guard-wired/must-fail/file-but-not-wired/.claude/settings.json +1 -0
  50. formwork_cli/kit/check/fixtures/guard-wired/must-fail/file-but-not-wired/.formwork.toml +1 -0
  51. formwork_cli/kit/check/fixtures/guard-wired/must-pass/declared-and-wired/.claude/settings.json +1 -0
  52. formwork_cli/kit/check/fixtures/guard-wired/must-pass/declared-and-wired/.formwork.toml +1 -0
  53. formwork_cli/kit/check/fixtures/guard-wired/must-pass/nothing-declared/README.md +1 -0
  54. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-check-went-missing/formwork/check/checks/still-here +2 -0
  55. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-check-went-missing/state/fingerprints.txt +2 -0
  56. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-guard-was-altered/formwork/guard/git-boundary +3 -0
  57. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-guard-was-altered/state/fingerprints.txt +1 -0
  58. formwork_cli/kit/check/fixtures/kit-integrity/must-pass/everything-matches/formwork/guard/git-boundary +2 -0
  59. formwork_cli/kit/check/fixtures/kit-integrity/must-pass/everything-matches/state/fingerprints.txt +1 -0
  60. formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/architect.md +3 -0
  61. formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/researcher.md +3 -0
  62. formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/round.md +4 -0
  63. formwork_cli/kit/check/fixtures/predictions-first/must-pass/a-round-that-has-not-argued-yet/docs/rounds/0006-not-started/round.md +3 -0
  64. formwork_cli/kit/check/fixtures/predictions-first/must-pass/no-rounds-at-all/docs/README.md +3 -0
  65. formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/architect.md +3 -0
  66. formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/predictions.md +4 -0
  67. formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/researcher.md +3 -0
  68. formwork_cli/kit/check/fixtures/role-shape/must-fail/claims-a-grant-binds-everywhere/formwork/roles/README.md +6 -0
  69. formwork_cli/kit/check/fixtures/role-shape/must-fail/claims-a-grant-binds-everywhere/formwork/roles/complete.md +18 -0
  70. formwork_cli/kit/check/fixtures/role-shape/must-fail/missing-a-section/formwork/roles/vague.md +16 -0
  71. formwork_cli/kit/check/fixtures/role-shape/must-fail/spawn-without-being-lead/formwork/roles/eager.md +18 -0
  72. formwork_cli/kit/check/fixtures/role-shape/must-fail/two-roles-one-job/formwork/roles/first.md +18 -0
  73. formwork_cli/kit/check/fixtures/role-shape/must-fail/two-roles-one-job/formwork/roles/second.md +18 -0
  74. formwork_cli/kit/check/fixtures/role-shape/must-pass/well-formed/formwork/roles/complete.md +18 -0
  75. formwork_cli/kit/check/fixtures/rule-labels/must-fail/claims-enforcement-that-does-not-exist/formwork/rules/core.md +9 -0
  76. formwork_cli/kit/check/fixtures/rule-labels/must-fail/no-catches/formwork/rules/core.md +9 -0
  77. formwork_cli/kit/check/fixtures/rule-labels/must-fail/unlabelled/formwork/rules/core.md +7 -0
  78. formwork_cli/kit/check/fixtures/rule-labels/must-pass/well-formed/formwork/rules/core.md +10 -0
  79. formwork_cli/kit/check/run +340 -0
  80. formwork_cli/kit/check/test_gate.py +222 -0
  81. formwork_cli/kit/first-run.md +204 -0
  82. formwork_cli/kit/fw +121 -0
  83. formwork_cli/kit/glossary.md +160 -0
  84. formwork_cli/kit/guard/git-boundary +627 -0
  85. formwork_cli/kit/guard/protected-files +748 -0
  86. formwork_cli/kit/guard/quality-gate +260 -0
  87. formwork_cli/kit/guard/test_boundary.py +273 -0
  88. formwork_cli/kit/guard/test_protection.py +254 -0
  89. formwork_cli/kit/guard/test_quality_gate.py +156 -0
  90. formwork_cli/kit/install +395 -0
  91. formwork_cli/kit/limits.md +141 -0
  92. formwork_cli/kit/loop.md +82 -0
  93. formwork_cli/kit/roles/HOW-TO-ADD-A-ROLE.md +105 -0
  94. formwork_cli/kit/roles/TEMPLATE.md +26 -0
  95. formwork_cli/kit/roles/method/architect.md +269 -0
  96. formwork_cli/kit/roles/method/challenger.md +243 -0
  97. formwork_cli/kit/roles/method/lead.md +280 -0
  98. formwork_cli/kit/roles/method/record-keeper.md +206 -0
  99. formwork_cli/kit/roles/method/researcher.md +246 -0
  100. formwork_cli/kit/roles/method/reviewer.md +207 -0
  101. formwork_cli/kit/roles/packs/accessibility.md +236 -0
  102. formwork_cli/kit/roles/packs/ai.md +248 -0
  103. formwork_cli/kit/roles/packs/analyst.md +233 -0
  104. formwork_cli/kit/roles/packs/backend.md +425 -0
  105. formwork_cli/kit/roles/packs/brainstormer.md +190 -0
  106. formwork_cli/kit/roles/packs/data.md +212 -0
  107. formwork_cli/kit/roles/packs/devops.md +203 -0
  108. formwork_cli/kit/roles/packs/frontend.md +224 -0
  109. formwork_cli/kit/roles/packs/integrations.md +215 -0
  110. formwork_cli/kit/roles/packs/legal.md +251 -0
  111. formwork_cli/kit/roles/packs/marketing.md +206 -0
  112. formwork_cli/kit/roles/packs/mobile.md +202 -0
  113. formwork_cli/kit/roles/packs/performance.md +192 -0
  114. formwork_cli/kit/roles/packs/product.md +217 -0
  115. formwork_cli/kit/roles/packs/security.md +267 -0
  116. formwork_cli/kit/roles/packs/sre.md +203 -0
  117. formwork_cli/kit/roles/packs/tester.md +246 -0
  118. formwork_cli/kit/roles/packs/user-researcher.md +218 -0
  119. formwork_cli/kit/roles/packs/ux.md +205 -0
  120. formwork_cli/kit/roles/packs/visual.md +199 -0
  121. formwork_cli/kit/roles/packs/writer.md +198 -0
  122. formwork_cli/kit/round.md +131 -0
  123. formwork_cli/kit/rules/core.md +195 -0
  124. formwork_cli/kit/rules/full.md +493 -0
  125. formwork_cli/kit/templates/brief.md +68 -0
  126. formwork_cli/kit/templates/decision.md +93 -0
  127. formwork_cli/kit/templates/predictions.md +54 -0
  128. formwork_cli/kit/templates/report.md +52 -0
  129. formwork_cli/kit/templates/round.md +77 -0
  130. formwork_cli/kit/test_install.py +165 -0
  131. formwork_cli/kit/troubleshooting.md +247 -0
  132. formwork_cli/kit-page/FORMWORK.md +182 -0
  133. formwork_kit-0.1.0.dist-info/METADATA +308 -0
  134. formwork_kit-0.1.0.dist-info/RECORD +137 -0
  135. formwork_kit-0.1.0.dist-info/WHEEL +4 -0
  136. formwork_kit-0.1.0.dist-info/entry_points.txt +2 -0
  137. formwork_kit-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,308 @@
1
+ Metadata-Version: 2.5
2
+ Name: formwork-kit
3
+ Version: 0.1.0
4
+ Summary: You bring the idea. It brings the whole team. Rules your coding agent cannot ignore.
5
+ Project-URL: Homepage, https://github.com/makariim/formwork
6
+ Project-URL: Source, https://github.com/makariim/formwork
7
+ Project-URL: Issues, https://github.com/makariim/formwork/issues
8
+ Author: Muhammad Elsherif
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: agents,ai,claude,coding-agent,project-management
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Topic :: Software Development :: Quality Assurance
27
+ Requires-Python: >=3.8
28
+ Description-Content-Type: text/markdown
29
+
30
+ <div align="center">
31
+
32
+ <picture>
33
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
34
+ <img src="assets/logo-light.svg" width="96" alt="">
35
+ </picture>
36
+
37
+ # Formwork
38
+
39
+ **You bring the idea. It brings the whole team.**
40
+
41
+ *Not a typo. Builders use formwork to hold a shape until it can stand on its
42
+ own. Projects never had that. Now they do.*
43
+
44
+ [![licence](https://img.shields.io/badge/licence-MIT-green.svg)](LICENSE)
45
+
46
+ </div>
47
+
48
+ ---
49
+
50
+ <div align="center">
51
+
52
+ | A team | A way of working | Rules that refuse |
53
+ |:--:|:--:|:--:|
54
+ | everyone a project needs | brief, work, check, report, stop | some mistakes cannot happen |
55
+
56
+ </div>
57
+
58
+ ```console
59
+ $ pipx install formwork-kit
60
+ $ formwork init && formwork install --runtime claude-code
61
+ $ formwork check
62
+ GATE: green. 9 check(s), each shown to reject the wrong and accept the right.
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Ideas do not die at the idea
68
+
69
+ They die at what comes next.
70
+
71
+ You need someone to find the holes in your plan. Someone who knows what breaks
72
+ at 3am, what a screen should do, what the small print means. You need your
73
+ choices written down so you are not arguing about them again next month. Most
74
+ of all you need someone who will tell you no.
75
+
76
+ That used to mean hiring people. People cost money. Hiring takes time.
77
+
78
+ **Now it is a folder you copy into your project.**
79
+
80
+ Twenty seven roles, already written. A lead, a challenger, an architect, a
81
+ researcher, a reviewer. Engineers for the back end, the front end, phones,
82
+ data, servers and safety. A designer, a writer, a product person, a marketer.
83
+ Someone who tells you when to call a real lawyer.
84
+
85
+ Nobody to hire. Nobody to wait for. They are in the folder.
86
+
87
+ ---
88
+
89
+ ## Who it is for
90
+
91
+ **Anyone building something with an AI agent.**
92
+
93
+ **New to this?** The team, the order of work, the notes and the rules all
94
+ arrive working. You bring the idea.
95
+
96
+ **Done it many times?** Now it sits where your agents can read it, and some of
97
+ it they cannot ignore. Delete the rules you disagree with. Rewrite any role you
98
+ know better.
99
+
100
+ **Expert in one thing?** Your role file will be thinner than you are. Replace
101
+ it. Everything else keeps working around it.
102
+
103
+ ---
104
+
105
+ ## What you get
106
+
107
+ **A way of working.** You say what you want. The agent works. The checks run.
108
+ It tells you what it did, then stops and waits for you.
109
+
110
+ **Notes that write themselves.** Choices get a number and a page, instead of
111
+ living in a chat you will close and lose.
112
+
113
+ **Rules your agent cannot ignore.** Not tips. Real refusals.
114
+
115
+ ```console
116
+ you: commit this for me
117
+ agent: REFUSED by the version-control boundary: git commit changes
118
+ the repository.
119
+ ```
120
+
121
+ Nobody read you a rule. You watched it work.
122
+
123
+ > [!IMPORTANT]
124
+ > That is the whole idea. You think about what you are building. The kit holds
125
+ > everything else.
126
+
127
+ ---
128
+
129
+ ## Install
130
+
131
+ | You need | Check it |
132
+ |---|---|
133
+ | **Python 3.8 or newer** | `python3 --version` |
134
+ | **git** | `git --version` |
135
+ | **An AI coding agent** | Claude Code, Codex, Cursor or Gemini CLI |
136
+
137
+ No packages, no setup. The kit is text files and small Python programs.
138
+
139
+ ```
140
+ pipx install formwork-kit
141
+
142
+ cd /your/project
143
+ formwork init
144
+ formwork install --runtime claude-code
145
+ formwork check
146
+ ```
147
+
148
+ That last line should say green.
149
+
150
+ `init` puts `formwork/` and `FORMWORK.md` in your project. `install` wires the
151
+ guards into your agent and writes your role files. Type `formwork` on its own
152
+ to see the rest.
153
+
154
+ > [!TIP]
155
+ > **Use pipx, not pip.** Plain pip works, but often puts the command somewhere
156
+ > your shell does not look, and you get `command not found` with no clue why.
157
+
158
+ **Or install nothing.** The kit is just files:
159
+
160
+ ```
161
+ git clone https://github.com/makariim/formwork.git the-kit
162
+ cp -R the-kit/formwork the-kit/FORMWORK.md /your/project/
163
+
164
+ cd /your/project
165
+ formwork/fw install --runtime claude-code
166
+ formwork/fw check
167
+ ```
168
+
169
+ **What it touches.** It adds `formwork/` and `FORMWORK.md`, writes your agent's
170
+ settings file keeping anything already there, and puts one file in
171
+ `~/.formwork/` holding a fingerprint of each file that enforces a rule.
172
+
173
+ | System | Does it work? |
174
+ |---|---|
175
+ | **macOS** | Yes. Built and used here |
176
+ | **Linux** | Should do. Nobody has tried. **Try it and tell us** |
177
+ | **Windows** | The command installs. The guards assume a unix shell and nobody has run them there |
178
+
179
+ ---
180
+
181
+ ## What is inside
182
+
183
+ | | | count it yourself |
184
+ |---|---|---|
185
+ | **3 guards** | small programs that refuse. Two stop a command, one stops a turn ending | `ls formwork/guard \| grep -v test_` |
186
+ | **9 checks** | small programs that read your project and say green or red | `ls formwork/check/checks \| wc -l` |
187
+ | **27 roles** | one file each, saying what that job does and where it stops | `ls formwork/roles/*/*.md \| wc -l` |
188
+ | **46 rules** | 13 you meet daily, 33 for when you need them | `grep -c '^### ' formwork/rules/*.md` |
189
+ | **295 tests** | every guard and check, proved able to fail | `formwork test` |
190
+
191
+ It is all text files and small programs. You can read every line. Nothing is
192
+ hidden. Nothing is sent anywhere.
193
+
194
+ ---
195
+
196
+ ## Every check has been watched failing
197
+
198
+ A check nobody has seen fail proves nothing.
199
+
200
+ So each check ships test cases of both kinds: at least one it must reject, at
201
+ least one it must accept. It has to tell them apart. Watch it yourself with
202
+ `formwork demo`.
203
+
204
+ ---
205
+
206
+ ## Which agents work
207
+
208
+ | Agent | Can it stop a command? |
209
+ |---|---|
210
+ | **Claude Code** | Yes. Seen doing it |
211
+ | **Codex** | It should. Nobody has tried |
212
+ | **Cursor** | It should. Nobody has tried |
213
+ | **Gemini CLI** | It should. Nobody has tried |
214
+
215
+ > [!NOTE]
216
+ > For the three nobody has tried, `formwork check` stays red until you write
217
+ > the hook file yourself. Your agent's page in `formwork/adapters/` says what
218
+ > goes in it. **Red is the right answer there: nothing is guarding you yet.**
219
+
220
+ **Those three are the easiest way to help.** Set one up, ask your agent to
221
+ commit something, and tell us what happened. Either answer is useful.
222
+
223
+ ---
224
+
225
+ ## What this will not pretend
226
+
227
+ Every number here comes with the command that made it. Anything unmeasured says
228
+ so in capitals rather than guessing. There are three:
229
+
230
+ | | |
231
+ |---|---|
232
+ | **What a round costs in money** | never measured. [`COSTS.md`](formwork/COSTS.md) says NOT ESTABLISHED instead of guessing |
233
+ | **Whether the guards stop a determined agent** | they do not. [`limits.md`](formwork/limits.md) lists every way around them |
234
+ | **Whether three of the four agents work** | nobody has tried them |
235
+
236
+ > [!WARNING]
237
+ > The guards stop the ordinary path, not a clever one. If you need real safety,
238
+ > use a sandbox.
239
+
240
+ Every time this kit failed on the person who wrote it, the failure went into
241
+ [`docs/dogfood.md`](docs/dogfood.md) instead of being quietly patched. That page
242
+ is the best reason to trust the rest.
243
+
244
+ ---
245
+
246
+ ## Where to start
247
+
248
+ [`formwork/first-run.md`](formwork/first-run.md). Seven short steps, on your
249
+ own project. No tutorial. No pretend example.
250
+
251
+ It should take about fifteen minutes. Nobody has timed the part you do, and the
252
+ page says so.
253
+
254
+ ---
255
+
256
+ ## The rest
257
+
258
+ **Start here**
259
+
260
+ | | |
261
+ |---|---|
262
+ | [`formwork/first-run.md`](formwork/first-run.md) | seven short steps, on your own project |
263
+ | [`FORMWORK.md`](FORMWORK.md) | the whole method on one page. Read it after your first run |
264
+
265
+ **While you work**
266
+
267
+ | | |
268
+ |---|---|
269
+ | [`loop.md`](formwork/loop.md) | how one job goes, start to finish |
270
+ | [`round.md`](formwork/round.md) | how to run a round, and when it is worth it |
271
+ | [`templates/`](formwork/templates/) | brief, predictions, report, decision, round |
272
+ | [`roles/`](formwork/roles/) | the roles, and how to write your own |
273
+ | [`rules/`](formwork/rules/) | the rules, each saying what it catches |
274
+
275
+ **When you need it**
276
+
277
+ | | |
278
+ |---|---|
279
+ | [`troubleshooting.md`](formwork/troubleshooting.md) | every error message and what to do |
280
+ | [`glossary.md`](formwork/glossary.md) | every word we use, in plain language |
281
+ | [`limits.md`](formwork/limits.md) | what this kit cannot do |
282
+ | [`COSTS.md`](formwork/COSTS.md) | what it costs, and the number nobody has |
283
+ | [`FAQ.md`](FAQ.md) | questions people ask |
284
+
285
+ **How it was built**
286
+
287
+ | | |
288
+ |---|---|
289
+ | [`docs/`](docs/) | the survey, the design, and what broke |
290
+ | [`docs/dogfood.md`](docs/dogfood.md) | the kit failing on its own author, written down |
291
+ | [`RELEASING.md`](RELEASING.md) | for the maintainer |
292
+
293
+ ## Contributing
294
+
295
+ Forks are the point. What helps most, in order:
296
+
297
+ - **A command that got past a guard.** One line, no fix needed
298
+ - **A normal command that was wrongly stopped.** Just as useful
299
+ - **A report from an untried agent**, whether it worked or not
300
+ - **A new role** the twenty seven do not cover
301
+
302
+ See [CONTRIBUTING.md](CONTRIBUTING.md) and [SECURITY.md](SECURITY.md).
303
+
304
+ ---
305
+
306
+ ## Licence
307
+
308
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,137 @@
1
+ formwork_cli/__init__.py,sha256=8NVdu2quTH5btLR6v6xEATiDiHoy7qWU8bMGeyll-hI,11575
2
+ formwork_cli/kit/COSTS.md,sha256=tzqjumUJWT4oTiH-lo-fFLMnEHd54yJgauWancaZ6Rk,3455
3
+ formwork_cli/kit/build,sha256=lOWDvgvL1Fbd5Ys1AvP5fvUoWI5CsveGxpGxRHhRzjs,15850
4
+ formwork_cli/kit/first-run.md,sha256=_JJsY0iWSOLtO4hK4Wnul7DKvunFMHO_lJZDIuEfp9M,6347
5
+ formwork_cli/kit/fw,sha256=cUJznMohI-OxEadmGZU8EbYQULNEtYqmZydLYllnEjI,3969
6
+ formwork_cli/kit/glossary.md,sha256=_FXl3Mp3k3NfjKKGmPrRm_7jVzdlNOX0ZFaHUDEg7J4,5047
7
+ formwork_cli/kit/install,sha256=N0uwb5hOQaNgiKvletdHcMeTKglYZ75wz1Hwj8Cv-P4,14893
8
+ formwork_cli/kit/limits.md,sha256=InTDj-WfUqNuldyZ7yA9VvByNGnRzxX6V9Ue_9N1HsU,5420
9
+ formwork_cli/kit/loop.md,sha256=-8hb4BUYtiOJJzTjXc0XJorTQVI9pfjnx-kac9BeB-g,2359
10
+ formwork_cli/kit/round.md,sha256=a0NWKh3cWjL21sraFFPjoxfBTi8z2I5ct4g9WykNEKM,4501
11
+ formwork_cli/kit/test_install.py,sha256=dtOUvn1rT4aahb6A1fueWHkdsOLj7_RrOLQn783pyHQ,6029
12
+ formwork_cli/kit/troubleshooting.md,sha256=m0GdMqeEObDoVbp34xIsSqpg5OJyJKBT806Vif0N4sA,6329
13
+ formwork_cli/kit/adapters/claude-code/README.md,sha256=__6hmKdwCBmw_WTbT_-RBEyaFu_jeLM6rDCYWKfWUGA,1647
14
+ formwork_cli/kit/adapters/claude-code/settings.json,sha256=d4BsM4P2Tv8g0ECryAroLaFzGtur6iNraIF3kQeIXAs,1204
15
+ formwork_cli/kit/adapters/codex/README.md,sha256=z7OTqJYfZxRt5HhYRuexl6A24otPqfqV_SifK1QOqkY,1585
16
+ formwork_cli/kit/adapters/cursor/README.md,sha256=y2IQD78IKyJTUXUZ69XoFYSwg7gDgxz3N4DynwHx49Q,1596
17
+ formwork_cli/kit/adapters/gemini-cli/README.md,sha256=41N28LSuYPwjD8WyCWbGq9E91N6cKSKjL5ls6sjQjhI,1496
18
+ formwork_cli/kit/check/run,sha256=G5Q9Mlr-uGNuQvsFshqmbPcYtTS3YOEkJ1ZTs78ooJU,13596
19
+ formwork_cli/kit/check/test_gate.py,sha256=OGmteEEDPQac23yWfvsounPMttSfFGFQjYHFGbUmLoo,8828
20
+ formwork_cli/kit/check/checks/config-shape,sha256=YtI5gakKQYqfAMEqvwPpJpR6xXULDnm15X9g3tA4uac,4512
21
+ formwork_cli/kit/check/checks/decision-ids,sha256=zy8FJaYzoisY_EvfVZkqmJXpOjlDmdpat43PC0z7dQ0,5548
22
+ formwork_cli/kit/check/checks/doc-links,sha256=xDa5H9jVx7UksW4pH-rExVJKMrOuh7cdQxREafWs5yU,5505
23
+ formwork_cli/kit/check/checks/generated-current,sha256=STX7qwrIQQJQnopDLhKzB9w8jwbV6LidnxTRwM88ctU,2639
24
+ formwork_cli/kit/check/checks/guard-wired,sha256=r3wnm8gY7JwxSPZsLASxuOjQfY0AKDt8O6RQnQCmEmI,5208
25
+ formwork_cli/kit/check/checks/kit-integrity,sha256=vMJe2OwIrmGlG_l9M0YGvb_dd7nSNPCY3UUzLQPpp9E,7635
26
+ formwork_cli/kit/check/checks/predictions-first,sha256=Ash1fca37Y9IHbAWLFmPnLxLPCMbt0CZFwqE0nzsNi0,4328
27
+ formwork_cli/kit/check/checks/role-shape,sha256=P2kvQInLe7rTKfOw10Q22e9zypzzXyUsRd2-bmmEvNY,6372
28
+ formwork_cli/kit/check/checks/rule-labels,sha256=VpJk3J13yGoejetAthbvGPcUa77AeH80XzBy3WxT-Lw,4893
29
+ formwork_cli/kit/check/fixtures/config-shape/must-fail/documents-a-section-that-does-not-exist/.formwork.toml,sha256=twXudXM09bCUhwazJ5SyjUshfPEWlG2CwkfKj88OgBQ,70
30
+ formwork_cli/kit/check/fixtures/config-shape/must-fail/documents-a-section-that-does-not-exist/formwork/guide.md,sha256=ibsIaFqRgiTxABg-jq-9kCiwZha0znn4556-gwJVh6g,193
31
+ formwork_cli/kit/check/fixtures/config-shape/must-fail/rules-as-a-switchboard/.formwork.toml,sha256=VuteunCBVxXqXc3XgJyu3AksjXCk3gbA-RF0sZQxwMg,106
32
+ formwork_cli/kit/check/fixtures/config-shape/must-pass/layers-kept-apart/.formwork.toml,sha256=twXudXM09bCUhwazJ5SyjUshfPEWlG2CwkfKj88OgBQ,70
33
+ formwork_cli/kit/check/fixtures/decision-ids/must-fail/a-placeholder-shipped/docs/decisions/0003-still-pending.md,sha256=3Vd2kIdSWam85C9p81W306N9tRsT3mIO4DqSXS4FRBI,172
34
+ formwork_cli/kit/check/fixtures/decision-ids/must-fail/superseded-by-nothing/docs/decisions/0002-old.md,sha256=mThDH2eNvz4a8sVQ7f16fGKYzT8HP-15pPgu8Ci3DzQ,123
35
+ formwork_cli/kit/check/fixtures/decision-ids/must-fail/two-decisions-one-number/docs/decisions/0007-first.md,sha256=qKyY1AcsYW-WY1F47-x_GooR4DrDBFR2XRyvlDUE9Oc,109
36
+ formwork_cli/kit/check/fixtures/decision-ids/must-fail/two-decisions-one-number/docs/decisions/0007-second.md,sha256=kVm55uRsTwJDtoNVmE7WRICrPb5GSyI9KRSCVTdQD0c,96
37
+ formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0001-the-first.md,sha256=pSbPcq6wy4OHekC1yID_5FH4kj7Ygh3sgS6SAQ9cI0s,82
38
+ formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0002-the-second.md,sha256=E7PaWOHAtVxUrfynKgWiMN-6AMQBQiwW9Sw5TfxaUX0,119
39
+ formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0003-the-third.md,sha256=aixq2_aCfcoLmzC5qODGtjPzkMQp5oGK4JVL7XQMk6U,75
40
+ formwork_cli/kit/check/fixtures/decision-ids/must-pass/nothing-recorded-yet/docs/decisions/README.md,sha256=efxiQXrpGDwCjIPbznr25HNtCQK95Ypr0PmYuqILiTI,51
41
+ formwork_cli/kit/check/fixtures/doc-links/must-fail/never-written/index.md,sha256=tN284gg8I4ECvBsrDNPiQbb4_2TMbr8E0_PMUV_vsxE,177
42
+ formwork_cli/kit/check/fixtures/doc-links/must-fail/renamed-file/architecture-notes.md,sha256=YZCOW9VKD9RJKmwL4I51bptsS-hyWgUma98wGeQFB2E,77
43
+ formwork_cli/kit/check/fixtures/doc-links/must-fail/renamed-file/guide.md,sha256=j9t53IknfpiQMn6Gx1h_my77KNyUBieYK9iEkC3ETGk,258
44
+ formwork_cli/kit/check/fixtures/doc-links/must-pass/links-resolve/architecture-notes.md,sha256=jdfx7uMc3gVewvSdmwkXxPSfaJiz7-hp_Ui8U1bhndQ,21
45
+ formwork_cli/kit/check/fixtures/doc-links/must-pass/links-resolve/guide.md,sha256=4AbLFZI7Z3N_KU0JIVsXFw04N21NwqapY0MsXROAmuI,124
46
+ formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.formwork.toml,sha256=-oopMqHv3ZnHP_8-yyHYAIymiFkDv-71XDKzOYZfL_k,24
47
+ formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.claude/agents/sample.md,sha256=Hf5PmrDsM0JQPXDN7j6nyuYD9YeDQVHrs8n-kEUVf_k,480
48
+ formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.codex/agents/sample.toml,sha256=3BmblIOC05O88H4NKVTX_Z5JLqdBxIDDbEzmuzvQYfU,541
49
+ formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.gemini/agents/sample.md,sha256=dSbYHcsA8-8blj-P7kSy5_MpT33v8YqrR6VA0WTOpCE,447
50
+ formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/formwork/build,sha256=rZCRNL4eHun0a1UwhJTTntXWcCKl19Aa8NS6-W1oAto,13246
51
+ formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/formwork/roles/method/sample.md,sha256=3f4AigAnU4vQBUYhcshgfl5RIQ-iMprsciLJawH_qUk,249
52
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.formwork.toml,sha256=-oopMqHv3ZnHP_8-yyHYAIymiFkDv-71XDKzOYZfL_k,24
53
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.claude/agents/sample.md,sha256=bAEW9n1X3hPNTwbrDF7MTabqfIbYA-p27arCEec0894,422
54
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.codex/agents/sample.toml,sha256=3BmblIOC05O88H4NKVTX_Z5JLqdBxIDDbEzmuzvQYfU,541
55
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.gemini/agents/sample.md,sha256=dSbYHcsA8-8blj-P7kSy5_MpT33v8YqrR6VA0WTOpCE,447
56
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/formwork/build,sha256=rZCRNL4eHun0a1UwhJTTntXWcCKl19Aa8NS6-W1oAto,13246
57
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/formwork/roles/method/sample.md,sha256=3f4AigAnU4vQBUYhcshgfl5RIQ-iMprsciLJawH_qUk,249
58
+ formwork_cli/kit/check/fixtures/generated-current/must-pass/nothing-is-generated-here/README.md,sha256=PeYaEzYmmMy42oE0CuJv8h8CMGqNRRU_KRppTfaAVpQ,51
59
+ formwork_cli/kit/check/fixtures/guard-wired/must-fail/declared-but-no-file/.formwork.toml,sha256=-oopMqHv3ZnHP_8-yyHYAIymiFkDv-71XDKzOYZfL_k,24
60
+ formwork_cli/kit/check/fixtures/guard-wired/must-fail/file-but-not-wired/.formwork.toml,sha256=-oopMqHv3ZnHP_8-yyHYAIymiFkDv-71XDKzOYZfL_k,24
61
+ formwork_cli/kit/check/fixtures/guard-wired/must-fail/file-but-not-wired/.claude/settings.json,sha256=JqSF3yFNkHJ4UPklSK-ffwyM6lZH1AZSkXWTaPUKEs0,34
62
+ formwork_cli/kit/check/fixtures/guard-wired/must-pass/declared-and-wired/.formwork.toml,sha256=-oopMqHv3ZnHP_8-yyHYAIymiFkDv-71XDKzOYZfL_k,24
63
+ formwork_cli/kit/check/fixtures/guard-wired/must-pass/declared-and-wired/.claude/settings.json,sha256=vk5PlGGb_Sy0foia50hWwKPXvY1q0VbOHDOzmRu-dWU,463
64
+ formwork_cli/kit/check/fixtures/guard-wired/must-pass/nothing-declared/README.md,sha256=JBfYsLTeV8k-EOsMjmjojHrD9-sGny7nfaSLLokuKqM,46
65
+ formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-check-went-missing/formwork/check/checks/still-here,sha256=UF-2GjUg5DTbTr0o-vJAvDcgMMGBk8PlkcCKwbWGcOI,52
66
+ formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-check-went-missing/state/fingerprints.txt,sha256=BA2ylK4r8T3qH2rvQLXjRUJM1BIjyHzyDay7O_OsUbw,199
67
+ formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-guard-was-altered/formwork/guard/git-boundary,sha256=HES_6GS-TeF9r0Duj-98eTMNtE2aU1cHKqOdLSE4zUQ,76
68
+ formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-guard-was-altered/state/fingerprints.txt,sha256=DWSuNAfWO4YjP1zfqhprOVb43W0l6tthStwBX-wXo68,94
69
+ formwork_cli/kit/check/fixtures/kit-integrity/must-pass/everything-matches/formwork/guard/git-boundary,sha256=rn53lr99NcQeVRdfbYXd6qOnK4Hzx4yXQk9ejyEC4xo,48
70
+ formwork_cli/kit/check/fixtures/kit-integrity/must-pass/everything-matches/state/fingerprints.txt,sha256=DWSuNAfWO4YjP1zfqhprOVb43W0l6tthStwBX-wXo68,94
71
+ formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/architect.md,sha256=fE9dj1CCTA3VeUmvDM9t6bqdke75bPBF0CNh4fIHyxs,56
72
+ formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/researcher.md,sha256=xfiwMkn2d-Q-0WeB_3SmEHwJ3NL7UWONjz2BPLfHncQ,63
73
+ formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/round.md,sha256=yh_iSOTJAbZVe85h6sbTlPLGBeqd9yrReTY6X7JmNDg,140
74
+ formwork_cli/kit/check/fixtures/predictions-first/must-pass/a-round-that-has-not-argued-yet/docs/rounds/0006-not-started/round.md,sha256=llXPslq9vDM_UwFFiIWbFE4drQoTcb6vPiZ1FA_zM_M,38
75
+ formwork_cli/kit/check/fixtures/predictions-first/must-pass/no-rounds-at-all/docs/README.md,sha256=XfC60Eapl2NYX8Bx52HwKK6DQf961Hvo46RRCl2Hoj0,42
76
+ formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/architect.md,sha256=_7XK7zgp3_k5LE8wlfUyF6JrRpjW2IhikiHaoJOFra0,25
77
+ formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/predictions.md,sha256=3U03ZWN90OotYS2Uoj0nsIy_GzkksjHHFe-9FlhY3Zw,141
78
+ formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/researcher.md,sha256=a4YYHksnRbkChNAorNJHNFgyKDdN_8nCDnoHhpCpnaM,32
79
+ formwork_cli/kit/check/fixtures/role-shape/must-fail/claims-a-grant-binds-everywhere/formwork/roles/README.md,sha256=zdH8FcVa75k4SQs85eLbLs4kI3-7p1SFBsrfx3TC3wM,153
80
+ formwork_cli/kit/check/fixtures/role-shape/must-fail/claims-a-grant-binds-everywhere/formwork/roles/complete.md,sha256=0ygUzfYf_Hfj9mKLYMdNUXEsZNUs3cKUEv2kzgJDFvo,375
81
+ formwork_cli/kit/check/fixtures/role-shape/must-fail/missing-a-section/formwork/roles/vague.md,sha256=Z4Vp25lgu_rBf93o8VBMXJTV6JZiq1O_LHhfiklShLQ,253
82
+ formwork_cli/kit/check/fixtures/role-shape/must-fail/spawn-without-being-lead/formwork/roles/eager.md,sha256=51IG1CqJCjv2Uj60aJzZrv5E8Ahzzgb46d5WEXezhwk,305
83
+ formwork_cli/kit/check/fixtures/role-shape/must-fail/two-roles-one-job/formwork/roles/first.md,sha256=crD_mgO5y9bZZp3IyVY97oNk0xk5LC_JHJJK2poy__8,233
84
+ formwork_cli/kit/check/fixtures/role-shape/must-fail/two-roles-one-job/formwork/roles/second.md,sha256=_P8muX8kPZN5rq5GV9zc3B9_ff6xKp7JISZLjo5ziJM,303
85
+ formwork_cli/kit/check/fixtures/role-shape/must-pass/well-formed/formwork/roles/complete.md,sha256=0ygUzfYf_Hfj9mKLYMdNUXEsZNUs3cKUEv2kzgJDFvo,375
86
+ formwork_cli/kit/check/fixtures/rule-labels/must-fail/claims-enforcement-that-does-not-exist/formwork/rules/core.md,sha256=R2dr6ubWux69MtyGIXT28SNdVKfDFWGh3LH9Sgxg5oY,224
87
+ formwork_cli/kit/check/fixtures/rule-labels/must-fail/no-catches/formwork/rules/core.md,sha256=78rcxTJUsbUtYjQaI7p3adphY_eIdu4vl9NU4fg7qG0,173
88
+ formwork_cli/kit/check/fixtures/rule-labels/must-fail/unlabelled/formwork/rules/core.md,sha256=kXbgYXGZ4Otulp9xFCmGCO-is5Oltcy9dnbRpG2vLU0,179
89
+ formwork_cli/kit/check/fixtures/rule-labels/must-pass/well-formed/formwork/rules/core.md,sha256=5AHzF4tX0kzZhCHNemVQK8dsyAMKsGNxsJ0S3__psk4,179
90
+ formwork_cli/kit/guard/git-boundary,sha256=f9-ApNjWyY7GzXS7HIea0BrsceLECxltFrpKsQXvSiw,26672
91
+ formwork_cli/kit/guard/protected-files,sha256=Dkzu-LzQdtBCnZVRI1tr0Jt9JwXVQVFYuuIyqFP09Qo,30289
92
+ formwork_cli/kit/guard/quality-gate,sha256=gb1QyTZYAkRDUIaUu5Ia39tmDucBCZeq6Wo7pvU2O_4,8979
93
+ formwork_cli/kit/guard/test_boundary.py,sha256=_bJG6OT6QBG7Amtnq5xu9nKlx7ooLNd9W_Nt2qZQJIg,10527
94
+ formwork_cli/kit/guard/test_protection.py,sha256=lgoRJLOmZoMgAXoLLU7Iy7h25R7E2yP0Ve0EVrq9cqc,10673
95
+ formwork_cli/kit/guard/test_quality_gate.py,sha256=0QBZojeEbe3XbPdM8wXP3tutwJUjEpix84yoRiAjBh8,5540
96
+ formwork_cli/kit/roles/HOW-TO-ADD-A-ROLE.md,sha256=d2dl4Xj8yAGtEPEriXYXK2gkEaiqQBqqLsKjdydc4Rk,4161
97
+ formwork_cli/kit/roles/TEMPLATE.md,sha256=Ba3QQ2DBjw3pIQvyTCpLaGH61vQ6LsVUGiUwnxqow4Y,766
98
+ formwork_cli/kit/roles/method/architect.md,sha256=YErcpAXJ3uhUM8wxs7v0LH9VvN-UjwR0gsoAZjUJVgo,10535
99
+ formwork_cli/kit/roles/method/challenger.md,sha256=KcFHLwasO7cNgcNUw8Cmf0sh_S_TetLHTjh6Kl9pZgA,8637
100
+ formwork_cli/kit/roles/method/lead.md,sha256=ZtskeTPIwciK-_oQIXvpj9TyozwUsgGhELte-zn4FGY,10066
101
+ formwork_cli/kit/roles/method/record-keeper.md,sha256=BQm9WmF86BQlMQ_U49mOv1EXlEV7eBfP07aaQDCu7J8,7548
102
+ formwork_cli/kit/roles/method/researcher.md,sha256=F2nqWvSLN_3DXl2s_jTkiL9e6mRPBAURsDf8tcEr8sU,8783
103
+ formwork_cli/kit/roles/method/reviewer.md,sha256=eOGvqXdIpFisvdU7fzNfoAAkYjsYxU3tL7pktgzvFIY,7478
104
+ formwork_cli/kit/roles/packs/accessibility.md,sha256=_r0leUKwAGxHiARJV8-eXLlmZ8FJx6Zl3rqpk0WsOSs,8659
105
+ formwork_cli/kit/roles/packs/ai.md,sha256=h2nk0SteQx_Gff7qUUZTi4Y5HjbvW2CaG6pkCOkVhww,8579
106
+ formwork_cli/kit/roles/packs/analyst.md,sha256=9RTurEEzZFjoSaaXdYcbeMnYYQfNDKTloWj7t1X-aIQ,7999
107
+ formwork_cli/kit/roles/packs/backend.md,sha256=2YXFJBBlwUungA3GlI7LnKK0E7_v5tuhnytHb-LOpgY,17253
108
+ formwork_cli/kit/roles/packs/brainstormer.md,sha256=F5cMgdXOvrmYeva2v-BXc5KYzahEOdVx6PKfVrStauQ,6848
109
+ formwork_cli/kit/roles/packs/data.md,sha256=p3G_4mCMtgWDGoT7Oh5W6H7zW3stLX5vjEFfLQaow9w,7846
110
+ formwork_cli/kit/roles/packs/devops.md,sha256=NvyE7Ny4n1WlbGYuqKXlEbmHs3oea_TJOho8URvim1Q,7195
111
+ formwork_cli/kit/roles/packs/frontend.md,sha256=AxPbt9nndrWXvTJYALaU31zRXa_IHZDoCNMX6bw3g7I,7851
112
+ formwork_cli/kit/roles/packs/integrations.md,sha256=dAcyLgFfegbMP1JSArn79rgmbctvd9n2iDfSjbaN3ak,7797
113
+ formwork_cli/kit/roles/packs/legal.md,sha256=sSQyMZ0jpdhWonaQuf_H9rk1kMj1hoC5mUwLQnSa16w,9278
114
+ formwork_cli/kit/roles/packs/marketing.md,sha256=QN-NjdYwCkFmblWZxrvMc26lzgibuWN3R0v9zRLL8oM,7020
115
+ formwork_cli/kit/roles/packs/mobile.md,sha256=Uj4CgPmneXYNl185syYo8Jlozv5LZB3YEfhrHjkjm4o,7014
116
+ formwork_cli/kit/roles/packs/performance.md,sha256=80kQmkXaX8Vg57_IrnHEKWjVN9t38FDXDqgUSqA4uLA,6551
117
+ formwork_cli/kit/roles/packs/product.md,sha256=XZQXYzvKz-ltliMb2dHpVkAA-IPg6IN13EMRFezfdTU,7739
118
+ formwork_cli/kit/roles/packs/security.md,sha256=z-V64oWtpZ-A5DNeSu2V7CSG2On7GHdcvgW9XsxROTQ,9765
119
+ formwork_cli/kit/roles/packs/sre.md,sha256=odBPAZL5MDTrzQQt5SopujOWVbdOnXYnAe999lcObjE,7113
120
+ formwork_cli/kit/roles/packs/tester.md,sha256=Bb-1wiQKm7OUQARjVQTdSW5bKohfS3ssAd5aFeAX7ss,8776
121
+ formwork_cli/kit/roles/packs/user-researcher.md,sha256=nCxHpDPMEgCo2OHZph7tXC4Qc5whkIuAum5U8WIL_F4,7697
122
+ formwork_cli/kit/roles/packs/ux.md,sha256=fWuBwsEGAhe4ijMDlp9w3M3P-XVoSR5aprZNySC-eiI,7330
123
+ formwork_cli/kit/roles/packs/visual.md,sha256=QpE0W21M1jNuFsHmai2LMHdnDrV9SJ3QO8V8Y1QBNkM,7333
124
+ formwork_cli/kit/roles/packs/writer.md,sha256=QAFXRWqTeyD4CyuvnbMnkmVyIDS0jpLsh5MC5Rx3J0A,6737
125
+ formwork_cli/kit/rules/core.md,sha256=9kP3JiKX7ZnsYOgqJF6xzJYQxogwU5L7BZ_iNmHT7Mc,5525
126
+ formwork_cli/kit/rules/full.md,sha256=l6DXeIQhFfpkAhpG_HV1crxxGSEstRSBHr7-lI8yVUU,13445
127
+ formwork_cli/kit/templates/brief.md,sha256=0j17XgAlMiQXEua7f95I0tKc9PeOZTCiVUpFCOfmYWs,1837
128
+ formwork_cli/kit/templates/decision.md,sha256=rJteche-eKxTa11_5KOd362i62GgVon6Lykyfj2xzk8,2587
129
+ formwork_cli/kit/templates/predictions.md,sha256=MFDeUmak4VZVVkfefnwwasjkB1bzJZXymqYuko78pDk,1321
130
+ formwork_cli/kit/templates/report.md,sha256=_NWcxmpNnXRMeZmF_o1yjLcauxNbi4cpQL3nUIwiJSc,1211
131
+ formwork_cli/kit/templates/round.md,sha256=halzHsKDoQgD9eeAtTWQLB-i3_DlQm0RivZowcD5aQs,2242
132
+ formwork_cli/kit-page/FORMWORK.md,sha256=VIj3BMDPZv40fCkGpeApHGIqIRStPlJf8vsWbGhS1n8,5438
133
+ formwork_kit-0.1.0.dist-info/METADATA,sha256=Yk6uWDhABjI5EVCP_zH11GuHZJDgY3ojFwJxzJ1y_uk,9942
134
+ formwork_kit-0.1.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
135
+ formwork_kit-0.1.0.dist-info/entry_points.txt,sha256=-t50ecvrjujsontWrIrBOevdbDW2dEmZiy--rQ4U0f0,47
136
+ formwork_kit-0.1.0.dist-info/licenses/LICENSE,sha256=0tp9pHZNPklzSl84kQyMZWPLyHkneBxiQkaFAe6sHxE,1074
137
+ formwork_kit-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ formwork = formwork_cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Muhammad Elsherif
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.