workflow-toolkit 1.0.1

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 (142) hide show
  1. package/.agents/skills/ponytail/SKILL.md +111 -0
  2. package/.agents/skills/ponytail-audit/SKILL.md +37 -0
  3. package/.agents/skills/ponytail-debt/SKILL.md +41 -0
  4. package/.agents/skills/ponytail-gain/SKILL.md +47 -0
  5. package/.agents/skills/ponytail-help/SKILL.md +70 -0
  6. package/.agents/skills/ponytail-review/SKILL.md +52 -0
  7. package/.agents/skills/prompt-review/SKILL.md +60 -0
  8. package/.agents/skills/wtk/SKILL.md +64 -0
  9. package/.agents/skills/wtk/references/artifacts.md +82 -0
  10. package/.agents/skills/wtk/references/evidence.md +68 -0
  11. package/.agents/skills/wtk/references/git.md +75 -0
  12. package/.agents/skills/wtk/references/test-contract.md +76 -0
  13. package/.agents/skills/wtk/references/validation.md +127 -0
  14. package/.agents/skills/wtk-config/SKILL.md +102 -0
  15. package/.agents/skills/wtk-config/assets/agents/claude/deep-reviewer.md +40 -0
  16. package/.agents/skills/wtk-config/assets/agents/claude/designer.md +57 -0
  17. package/.agents/skills/wtk-config/assets/agents/claude/explorer.md +41 -0
  18. package/.agents/skills/wtk-config/assets/agents/claude/implementer.md +57 -0
  19. package/.agents/skills/wtk-config/assets/agents/claude/planner.md +68 -0
  20. package/.agents/skills/wtk-config/assets/agents/claude/verifier.md +80 -0
  21. package/.agents/skills/wtk-config/assets/agents/codex/deep-reviewer.toml +41 -0
  22. package/.agents/skills/wtk-config/assets/agents/codex/designer.toml +55 -0
  23. package/.agents/skills/wtk-config/assets/agents/codex/explorer.toml +35 -0
  24. package/.agents/skills/wtk-config/assets/agents/codex/implementer.toml +52 -0
  25. package/.agents/skills/wtk-config/assets/agents/codex/planner.toml +66 -0
  26. package/.agents/skills/wtk-config/assets/agents/codex/verifier.toml +78 -0
  27. package/.agents/skills/wtk-config/assets/agents/cursor/deep-reviewer.md +38 -0
  28. package/.agents/skills/wtk-config/assets/agents/cursor/designer.md +55 -0
  29. package/.agents/skills/wtk-config/assets/agents/cursor/explorer.md +39 -0
  30. package/.agents/skills/wtk-config/assets/agents/cursor/implementer.md +55 -0
  31. package/.agents/skills/wtk-config/assets/agents/cursor/planner.md +66 -0
  32. package/.agents/skills/wtk-config/assets/agents/cursor/verifier.md +79 -0
  33. package/.agents/skills/wtk-config/scripts/ad-index.py +123 -0
  34. package/.agents/skills/wtk-config/scripts/repository_intelligence.py +671 -0
  35. package/.agents/skills/wtk-config/scripts/workflow_config.py +972 -0
  36. package/.agents/skills/wtk-deep-review/SKILL.md +164 -0
  37. package/.agents/skills/wtk-deep-review/assets/PROMPT.md +56 -0
  38. package/.agents/skills/wtk-deep-review/assets/REVIEW_UI.html +1340 -0
  39. package/.agents/skills/wtk-deep-review/assets/findings.schema.json +113 -0
  40. package/.agents/skills/wtk-deep-review/references/context-pack.md +88 -0
  41. package/.agents/skills/wtk-deep-review/references/orchestration.md +164 -0
  42. package/.agents/skills/wtk-deep-review/references/output-contracts.md +149 -0
  43. package/.agents/skills/wtk-deep-review/references/publish-github.md +83 -0
  44. package/.agents/skills/wtk-deep-review/references/state-and-learnings.md +64 -0
  45. package/.agents/skills/wtk-deep-review/references/subagent-runtimes.md +33 -0
  46. package/.agents/skills/wtk-deep-review/references/taxonomy.md +70 -0
  47. package/.agents/skills/wtk-deep-review/scripts/_common.py +371 -0
  48. package/.agents/skills/wtk-deep-review/scripts/build_jobs.py +561 -0
  49. package/.agents/skills/wtk-deep-review/scripts/build_knowledge.py +349 -0
  50. package/.agents/skills/wtk-deep-review/scripts/build_manifest.py +479 -0
  51. package/.agents/skills/wtk-deep-review/scripts/graft_context.py +160 -0
  52. package/.agents/skills/wtk-deep-review/scripts/graphify_context.py +75 -0
  53. package/.agents/skills/wtk-deep-review/scripts/merge_findings.py +313 -0
  54. package/.agents/skills/wtk-deep-review/scripts/render_html.py +240 -0
  55. package/.agents/skills/wtk-deep-review/scripts/render_review.py +282 -0
  56. package/.agents/skills/wtk-deep-review/scripts/run_jobs.py +436 -0
  57. package/.agents/skills/wtk-deep-review/scripts/token_metrics.py +369 -0
  58. package/.agents/skills/wtk-discover/SKILL.md +270 -0
  59. package/.agents/skills/wtk-discover/references/document-format.md +149 -0
  60. package/.agents/skills/wtk-implement/SKILL.md +95 -0
  61. package/.agents/skills/wtk-implement/references/checklist-format.md +116 -0
  62. package/.agents/skills/wtk-implement/references/screens.md +129 -0
  63. package/.agents/skills/wtk-implement/references/test-policy.md +152 -0
  64. package/.agents/skills/wtk-implement/references/verify.md +297 -0
  65. package/.agents/skills/wtk-knowledge-check/SKILL.md +16 -0
  66. package/.agents/skills/wtk-knowledge-check/scripts/check.ts +502 -0
  67. package/.agents/skills/wtk-knowledge-check/scripts/cli.ts +32 -0
  68. package/.agents/skills/wtk-knowledge-check/scripts/frontmatter.ts +44 -0
  69. package/.agents/skills/wtk-lean/.skill-meta.json +6 -0
  70. package/.agents/skills/wtk-lean/NOTICE.md +18 -0
  71. package/.agents/skills/wtk-lean/SKILL.md +137 -0
  72. package/.agents/skills/wtk-lean/references/build.md +168 -0
  73. package/.agents/skills/wtk-lean/references/checks.md +253 -0
  74. package/.agents/skills/wtk-lean/references/memory.md +156 -0
  75. package/.agents/skills/wtk-lean/references/plan.md +514 -0
  76. package/.agents/skills/wtk-lean/references/verify.md +336 -0
  77. package/.agents/skills/wtk-lean/scripts/check_commit.py +121 -0
  78. package/.agents/skills/wtk-lean/scripts/fixtures/checks.md +98 -0
  79. package/.agents/skills/wtk-lean/scripts/fixtures/plan.md +119 -0
  80. package/.agents/skills/wtk-lean/scripts/fixtures/verification.md +41 -0
  81. package/.agents/skills/wtk-lean/scripts/lessons.py +412 -0
  82. package/.agents/skills/wtk-lean/scripts/selftest.py +401 -0
  83. package/.agents/skills/wtk-lean/scripts/validate_checks.py +417 -0
  84. package/.agents/skills/wtk-lean/scripts/validate_plan.py +580 -0
  85. package/.agents/skills/wtk-lean/scripts/validate_verification.py +357 -0
  86. package/.agents/skills/wtk-plan/SKILL.md +102 -0
  87. package/.agents/skills/wtk-plan/references/document-format.md +222 -0
  88. package/.agents/skills/wtk-qa/SKILL.md +14 -0
  89. package/.agents/skills/wtk-qa-execute/SKILL.md +115 -0
  90. package/.agents/skills/wtk-qa-execute/references/fix-loop.md +23 -0
  91. package/.agents/skills/wtk-qa-execute/references/session-protocol.md +25 -0
  92. package/.agents/skills/wtk-qa-plan/SKILL.md +111 -0
  93. package/.agents/skills/wtk-qa-plan/references/profile.md +35 -0
  94. package/.agents/skills/wtk-ship/SKILL.md +49 -0
  95. package/.agents/skills/wtk-ship/remediation.py +170 -0
  96. package/.agents/skills/wtk-ship/scripts/close_feature.py +83 -0
  97. package/.agents/skills/wtk-ship/scripts/review_convergence.py +373 -0
  98. package/.wtk.toml.example +93 -0
  99. package/AGENTS.md +129 -0
  100. package/NOTICE.md +12 -0
  101. package/README.md +440 -0
  102. package/bin/wtk.js +25 -0
  103. package/docs/toolkit/README.md +56 -0
  104. package/docs/toolkit/decisions.md +61 -0
  105. package/docs/toolkit/guidelines/CONTEXT-BUDGET.md +64 -0
  106. package/docs/toolkit/guidelines/DX.md +67 -0
  107. package/docs/toolkit/guidelines/FRONTEND.md +73 -0
  108. package/docs/toolkit/guidelines/KNOWLEDGE-WIKI.md +128 -0
  109. package/docs/toolkit/guidelines/MODELING.md +134 -0
  110. package/docs/toolkit/guidelines/QA-EXECUTION.md +46 -0
  111. package/docs/toolkit/guidelines/QA-SCENARIOS.md +165 -0
  112. package/docs/toolkit/guidelines/REVIEW-ROUNDS.md +160 -0
  113. package/docs/toolkit/guidelines/SECURITY.md +160 -0
  114. package/docs/toolkit/guidelines/UI-UX.md +117 -0
  115. package/docs/toolkit/guidelines/WORKFLOW-MEMORY.md +73 -0
  116. package/docs/toolkit/guidelines.md +50 -0
  117. package/docs/toolkit/loop.md +77 -0
  118. package/docs/toolkit/purpose.md +51 -0
  119. package/docs/toolkit/repository-intelligence.md +53 -0
  120. package/docs/toolkit/reviews.md +77 -0
  121. package/knowledge/AGENTS.md +316 -0
  122. package/knowledge/raw/README.md +17 -0
  123. package/package.json +74 -0
  124. package/scripts/install_security_skills.py +816 -0
  125. package/scripts/installer/engine.js +254 -0
  126. package/scripts/installer/knowledge.js +28 -0
  127. package/scripts/installer/packets.js +77 -0
  128. package/scripts/installer/terminal.js +98 -0
  129. package/scripts/installer/transaction.js +75 -0
  130. package/skills-lock.json +92 -0
  131. package/templates/adoption/agents/core.md +23 -0
  132. package/templates/adoption/agents/quality.md +3 -0
  133. package/templates/adoption/knowledge/wiki/architecture/index.md +3 -0
  134. package/templates/adoption/knowledge/wiki/decisions/index.md +3 -0
  135. package/templates/adoption/knowledge/wiki/design/index.md +3 -0
  136. package/templates/adoption/knowledge/wiki/domain/index.md +3 -0
  137. package/templates/adoption/knowledge/wiki/index.md +3 -0
  138. package/templates/adoption/knowledge/wiki/log.md +3 -0
  139. package/templates/adoption/knowledge/wiki/open-questions/index.md +3 -0
  140. package/templates/adoption/knowledge/wiki/product/index.md +3 -0
  141. package/templates/adoption/knowledge/wiki/research/index.md +3 -0
  142. package/templates/adoption/product/AGENT-CONTEXT.md +25 -0
@@ -0,0 +1,316 @@
1
+ # Knowledge Bundle — Operating Schema
2
+
3
+ This directory is an [Open Knowledge Format](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md)
4
+ v0.2 knowledge bundle. It is the project's durable understanding: what the domain means, what the
5
+ product must do, how the system is shaped, why past choices were made, and what research supports
6
+ all of it.
7
+
8
+ This file is the operating schema. It is not part of the bundle and carries no frontmatter. It may
9
+ evolve with use.
10
+
11
+ ## The one rule that keeps this alive
12
+
13
+ **Knowledge flows into the bundle. It never flows out.**
14
+
15
+ ```
16
+ CONTEXT.md, docs/, .specs/ ──ingest──> knowledge/
17
+ ```
18
+
19
+ The bundle never writes back to `.specs/`, and no tool outside this directory is modified to serve
20
+ it. Workflow Toolkit's `wtk` router and `wtk-*` skills do not know this bundle exists and must not
21
+ be taught to. `.specs/STATE.md`, `.specs/features/<f>/`,
22
+ `.specs/lessons.json` and `.specs/LESSONS.md` stay exactly where the skill expects them.
23
+
24
+ When the bundle and a source disagree, **the source wins** and the concept is corrected. A previous
25
+ attempt at this — `docs/obsidian/` — died precisely because no rule said which side was right, and
26
+ it silently kept describing tooling that had already been deleted.
27
+
28
+ ## Structure
29
+
30
+ ```
31
+ knowledge/
32
+ AGENTS.md This file. The operating schema. Outside the bundle.
33
+ raw/ Untouched originals, any format. Outside the bundle.
34
+ wiki/ THE BUNDLE. Everything below here must conform.
35
+ index.md Bundle root index. Declares okf_version. Reserved.
36
+ log.md Change history, newest first. Reserved.
37
+ domain/ Ubiquitous language. One concept per term.
38
+ product/ What the product must do.
39
+ architecture/ How the system is shaped, and the invariants that hold.
40
+ design/ Visual and experience guidelines.
41
+ decisions/ Why a past choice was made.
42
+ research/ External material, market, competitors, interviews.
43
+ ```
44
+
45
+ This pack ships empty group indexes so a new project has a place to land. Do not add concept pages
46
+ until a real concept exists.
47
+
48
+ **`raw/` sits outside `wiki/` for a hard reason, not a stylistic one.** Conformance rule §11.1 admits
49
+ no exception: every non-reserved `.md` inside the bundle must carry frontmatter with a `type`. A
50
+ verbatim transcript, a captured article or an exported memlog is markdown without frontmatter, so
51
+ placing it inside the bundle would either break conformance or force you to edit a source that is
52
+ supposed to be immutable. Keeping originals outside resolves both at once.
53
+
54
+ OKF's own `references/` convention (§6.3) is a different thing: it mirrors external material *as
55
+ concepts*, inside the bundle. Create `wiki/references/` only when a source earns a
56
+ `Source Summary` concept of its own. A concept can cite `raw/` directly, so most never will.
57
+
58
+ ## Concept documents
59
+
60
+ Every `.md` under `knowledge/` except the reserved `index.md` and `log.md` is exactly one concept.
61
+ Its path without the `.md` suffix is its stable ID. Use descriptive `kebab-case` filenames, and do
62
+ not move a file without updating the links that point at it.
63
+
64
+ ### Frontmatter
65
+
66
+ `type` is the only required field. Everything else is optional, and absence carries meaning: an
67
+ unverified concept is distinguishable from a verified one, never rejected.
68
+
69
+ ```yaml
70
+ ---
71
+ type: Decision
72
+ title: Example decision
73
+ description: One sentence of what was chosen.
74
+ tags: [example]
75
+ status: stable
76
+ generated: { by: human:name, at: 2026-08-08T14:00:00Z }
77
+ verified: { by: human:name, at: 2026-08-08T14:00:00Z }
78
+ stale_after: 2027-08-08
79
+ sources:
80
+ - id: state-ad-001
81
+ resource: ../../../.specs/STATE.md
82
+ title: STATE.md — AD-001
83
+ last_modified: 2026-08-08
84
+ ---
85
+ ```
86
+
87
+ A `resource` pointing outside the bundle uses a relative path resolved from the concept's own
88
+ directory. The example above sits at `wiki/decisions/`, so the repository root is three levels up;
89
+ an original in `raw/` would be `../../raw/<file>`. Bundle-absolute paths beginning with `/` address
90
+ only what is inside `wiki/`.
91
+
92
+ | Field | Meaning |
93
+ | --- | --- |
94
+ | `type` | **Required.** Short, self-explanatory kind. See the type list below. |
95
+ | `title` | Human-readable display name. |
96
+ | `description` | One sentence. Feeds indexes, search snippets and previews. |
97
+ | `resource` | Canonical URI of the asset the concept describes. Omit for abstract concepts. |
98
+ | `tags` | YAML list of short strings. |
99
+ | `status` | `draft` \| `stable` \| `deprecated`. Absent means `stable`. |
100
+ | `generated` | `{ by: <actor>, at: <ISO 8601> }`. When the *content* last changed meaningfully. |
101
+ | `verified` | List of `{ by: <actor>, at: <ISO 8601> }`. Who confirmed it against its sources. |
102
+ | `stale_after` | Absolute `YYYY-MM-DD`. The concept is stale on or after that day. |
103
+ | `sources` | What the concept derives from. See below. |
104
+
105
+ `generated` and `verified` are deliberately distinct: whoever *wrote* a concept need not be whoever
106
+ *confirmed* it. Trust tier is derived, never stored — no `verified` means unverified, `verified` by
107
+ a non-`human:` actor means machine-confirmed, `verified` by a `human:` actor means human-reviewed.
108
+
109
+ Do not invent metadata to fill the block. An absent field is information.
110
+
111
+ ### Actors
112
+
113
+ Identity fields (`generated.by`, `verified[].by`) use one convention:
114
+
115
+ - `human:<handle>` — a person. The `human:` prefix is what raises the trust tier, so use it for
116
+ anything hand-authored or hand-confirmed.
117
+ - `process:<id>` — an automated process, for example `process:knowledge-check`.
118
+ - `<producer>/<version>` — an agent or tool, for example `claude-opus-5/1m`.
119
+
120
+ ### Types
121
+
122
+ Keep the set small and consistent. Add one only when an existing type genuinely misdescribes the
123
+ concept.
124
+
125
+ | Type | Used for |
126
+ | --- | --- |
127
+ | `Concept` | A term of the ubiquitous language. |
128
+ | `Requirement` | Something the product must do. |
129
+ | `Architecture Invariant` | A constraint the system holds regardless of feature. |
130
+ | `Decision` | A choice made, its reasoning and its trade-off. |
131
+ | `Design Guideline` | A visual or experience rule. |
132
+ | `Research Note` | Understanding built from external material. |
133
+ | `Open Question` | A contradiction between sources that no document resolves and no concept owns. |
134
+ | `Source Summary` | What a single source in `raw/` says, when it earns a page of its own. |
135
+
136
+ A tension belonging to one concept is recorded **inside** that concept, not extracted into an
137
+ `Open Question`. The type exists for the ones that belong to nothing in particular. An
138
+ `Open Question` never answers itself: the answer is a decision, and decisions belong in
139
+ `.specs/STATE.md`.
140
+
141
+ ### Sources and citations
142
+
143
+ `sources` records what the concept derives from. Each entry needs a `resource`; everything else is
144
+ optional but valuable:
145
+
146
+ - `id` — stable key used to attribute individual claims. Required whenever the body cites it.
147
+ - `title` — human-readable label.
148
+ - `author` — who produced the source, in the actor convention. An authority signal.
149
+ - `last_modified` — `YYYY-MM-DD`, when the **source itself** last changed. This is what the drift
150
+ check reads; see below.
151
+
152
+ Attribute a specific claim with a markdown footnote whose label is a `sources[].id`:
153
+
154
+ ```markdown
155
+ The decision is recorded in the ledger.[^state-ad-001]
156
+
157
+ [^state-ad-001]: STATE.md — AD-001
158
+ ```
159
+
160
+ The label is the join key into `sources`, not prose to be parsed. Labels are keyed rather than
161
+ positional because these documents get rewritten often, and a positional index misattributes
162
+ silently the moment the list is reordered.
163
+
164
+ ### Body
165
+
166
+ Favour structural markdown — headings, lists, tables, fenced code — over flowing prose. It reads
167
+ better and retrieves better.
168
+
169
+ `# Schema` and `# Examples` carry conventional meaning; use them when they fit. There is no
170
+ required section.
171
+
172
+ Link concepts with standard markdown links, preferring the bundle-absolute form
173
+ `[professional profile](/domain/professional-profile.md)`, which survives a file moving within its
174
+ subdirectory. A link asserts a relationship; the *kind* of relationship lives in the surrounding
175
+ prose, never in the link itself. Explain it.
176
+
177
+ ## Operations
178
+
179
+ ### INGEST
180
+
181
+ When new material arrives:
182
+
183
+ 1. Put the source in `raw/` as `YYYY-MM-DD-<descriptive-kebab-case>.<ext>`. Read it.
184
+ **Never modify it afterwards** — a correction belongs in the concepts that cite it.
185
+ 2. Discuss the extracted points with the user before writing concepts.
186
+ 3. Create or update the affected concepts under `wiki/`. Fill `sources` with `id`,
187
+ `resource` pointing back at the `raw/` file, and `last_modified`.
188
+ 4. Update `generated.at` only on a meaningful content change.
189
+ 5. Add links to related concepts and footnotes to the claims that need them.
190
+ 6. Update `index.md` at the bundle root and in every affected subdirectory.
191
+ 7. Append to `log.md`.
192
+
193
+ One source usually touches several concepts. Process one source at a time with the user watching,
194
+ or a batch at once — whichever the user prefers, recorded here once it settles.
195
+
196
+ ### HARVEST
197
+
198
+ The project's own artefacts are sources like any other. Run the knowledge checker (`bun run knowledge`
199
+ in this pack); its gap report names what has accumulated in `.specs/` without a concept, and its
200
+ drift report names what changed underneath a concept that already exists.
201
+
202
+ Drift is measured against git, so it only speaks about committed sources. A source added to `raw/`
203
+ and cited in the same commit reports nothing, which is right — it has not drifted from anything
204
+ yet. The signal starts the moment that source changes again.
205
+
206
+ Harvest at the granularity of a finished feature, not a finished task. Most tasks produce no durable
207
+ knowledge.
208
+
209
+ A harvested concept must not restate its source. `.specs/STATE.md` is a flat, append-only ledger:
210
+ one entry per decision, no links. The bundle holds what the ledger structurally cannot — which
211
+ requirements a decision constrains, which invariant it follows from, which alternative it killed.
212
+ If a concept only repeats the ledger, it is duplication and should not exist.
213
+
214
+ Never harvest `.specs/features/<f>/tasks.md` — it is runner state. Never harvest `.specs/LESSONS.md`
215
+ or `.specs/lessons.json` — they declare themselves machine-owned and are rewritten by their own
216
+ script.
217
+
218
+ ### QUERY
219
+
220
+ 1. Read `index.md` to locate the relevant pages.
221
+ 2. Follow subdirectory indexes and links before searching more broadly.
222
+ 3. Read the relevant concepts and answer with citations.
223
+ 4. When an answer, comparison or connection has durable value, fold it back into the bundle as a
224
+ concept, then update the index and the log.
225
+
226
+ A useful query should leave the bundle better than it found it, not evaporate into the transcript.
227
+
228
+ ### LINT
229
+
230
+ Periodically, and always before a large ingest, review bundle health:
231
+
232
+ - contradictions between concepts;
233
+ - claims superseded by a more recent source;
234
+ - orphan concepts with no inbound links;
235
+ - broken internal links, and links whose relationship is never explained;
236
+ - important concepts mentioned but never given a page;
237
+ - missing or stale index entries;
238
+ - gaps a new source or some research could fill.
239
+
240
+ The knowledge checker covers the mechanical part — conformance, drift and gaps. LINT is the judgement
241
+ part that no script can make. Report questions worth investigating and sources worth adding.
242
+
243
+ ## Index and log
244
+
245
+ `index.md` is the entry point for progressive disclosure: it lets a reader see what exists before
246
+ opening anything. It carries no frontmatter, with one exception — the bundle-root `index.md` may
247
+ declare `okf_version`. Group entries under headings and reuse each concept's `description`:
248
+
249
+ ```markdown
250
+ # Domain
251
+
252
+ * [Sample Term](domain/sample-term.md) - One sentence from the concept's `description`.
253
+ ```
254
+
255
+ `log.md` is the change history, grouped by ISO date, newest first. Past entries are immutable: add
256
+ to the group for the current date rather than rewriting history.
257
+
258
+ ```markdown
259
+ ## 2026-08-08
260
+
261
+ * **Ingestion**: Added [Sample Term](/domain/sample-term.md).
262
+ * **Lint**: Fixed inconsistent links and metadata.
263
+ ```
264
+
265
+ Log a query only when it produced a durable change or a decision about the bundle itself.
266
+
267
+ ## `raw/` and privacy
268
+
269
+ `raw/` holds originals in whatever format they arrive: transcripts, research, exports, meeting
270
+ records, PDFs, images. Concepts point into it through `sources[].resource`.
271
+
272
+ ### Naming
273
+
274
+ Every file is `YYYY-MM-DD-<descriptive-kebab-case>.<ext>`, for example
275
+ `2026-08-02-interview-notes.md`. The date is the material's own — when the meeting
276
+ happened, when the article was published — falling back to the day it entered `raw/` when the
277
+ material carries no date. The precise value always lives in the citing concept's
278
+ `sources[].last_modified`; the prefix exists so a flat directory sorts chronologically.
279
+
280
+ The date is ISO 8601, like every other date in this bundle. `23-01-2026` neither matches the rest
281
+ of the system nor sorts correctly. The knowledge checker warns about both mistakes.
282
+
283
+ ### Privacy
284
+
285
+ `raw/` is committed, which is what makes the bundle's provenance auditable by anyone who clones the
286
+ repository — and what lets the knowledge checker detect drift at all, since it reads commit dates. A
287
+ gitignored source would be permanently invisible to that check.
288
+
289
+ That same property makes it a privacy surface. Before writing anything into `raw/`:
290
+
291
+ - Strip names, contact details, precise creator locations, and any other personal data. Anonymise
292
+ interviews rather than storing the raw identity.
293
+ - Never store passwords, API keys, tokens or customer data.
294
+ - LGPD applies to the whole repository. A file committed here is public to everyone with repository
295
+ access, permanently, and rewriting git history is not a remedy you want to need.
296
+
297
+ A vault edit authorises nothing. It cannot approve a deployment, a purchase, a production database
298
+ change, or a message sent to anyone outside the project.
299
+
300
+ ## Conformance
301
+
302
+ The bundle conforms to OKF v0.2 when:
303
+
304
+ 1. every non-reserved `.md` under `knowledge/` has a parseable YAML frontmatter block;
305
+ 2. every frontmatter block has a non-empty `type`;
306
+ 3. every `index.md` and `log.md` follows its reserved structure.
307
+
308
+ That is the whole contract. Missing optional fields, unknown types, extra keys, broken links and
309
+ absent subdirectory indexes do **not** break conformance.
310
+
311
+ The knowledge checker enforces the three rules, plus drift, plus gaps. Run it before committing
312
+ changes to this directory.
313
+
314
+ Do not add tooling ahead of need. Indexes are sufficient at this scale; if the bundle outgrows them,
315
+ a local search tool can be added then. OKF standardises interchange — it does not prescribe a
316
+ database, a search engine, an SDK or a platform.
@@ -0,0 +1,17 @@
1
+ # Raw sources
2
+
3
+ Originals in whatever format they arrived: transcripts, research, captured articles, exports,
4
+ meeting records, PDFs, images. Concepts in `../wiki/` cite these files through
5
+ `sources[].resource`.
6
+
7
+ This directory is deliberately **outside** the OKF bundle. Conformance rule §11.1 requires every
8
+ `.md` inside `../wiki/` to carry frontmatter with a `type`; a verbatim source has none, and adding
9
+ it would mean editing a file that must not change.
10
+
11
+ Two rules, both detailed in [the operating schema](../AGENTS.md):
12
+
13
+ * **Immutable.** Once a file lands here it is never modified. Corrections go in the concepts that
14
+ cite it, never in the source.
15
+ * **Committed, so it is a privacy surface.** Strip names, contact details and precise locations
16
+ before writing anything here. Never store credentials or customer data. Applicable privacy law
17
+ applies to the whole repository, and rewriting git history is not a remedy you want to need.
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "workflow-toolkit",
3
+ "version": "1.0.1",
4
+ "private": false,
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "packageManager": "bun@1.4.0",
8
+ "bin": {
9
+ "wtk": "bin/wtk.js"
10
+ },
11
+ "engines": {
12
+ "node": ">=18.0.0",
13
+ "bun": ">=1.4.0 <1.5.0"
14
+ },
15
+ "files": [
16
+ "bin/wtk.js",
17
+ "scripts/installer",
18
+ "scripts/install_security_skills.py",
19
+ "skills-lock.json",
20
+ "NOTICE.md",
21
+ "AGENTS.md",
22
+ ".wtk.toml.example",
23
+ "knowledge/AGENTS.md",
24
+ "knowledge/raw/README.md",
25
+ "templates/adoption",
26
+ "docs/toolkit/guidelines",
27
+ "docs/toolkit/README.md",
28
+ "docs/toolkit/repository-intelligence.md",
29
+ "docs/toolkit/decisions.md",
30
+ "docs/toolkit/guidelines.md",
31
+ "docs/toolkit/loop.md",
32
+ "docs/toolkit/purpose.md",
33
+ "docs/toolkit/reviews.md",
34
+ ".agents/skills/wtk",
35
+ ".agents/skills/wtk-lean",
36
+ ".agents/skills/wtk-discover",
37
+ ".agents/skills/wtk-plan",
38
+ ".agents/skills/wtk-implement",
39
+ ".agents/skills/wtk-config",
40
+ ".agents/skills/wtk-knowledge-check",
41
+ ".agents/skills/wtk-qa",
42
+ ".agents/skills/wtk-qa-plan",
43
+ ".agents/skills/wtk-qa-execute",
44
+ ".agents/skills/ponytail",
45
+ ".agents/skills/wtk-deep-review",
46
+ ".agents/skills/wtk-ship",
47
+ ".agents/skills/ponytail-audit",
48
+ ".agents/skills/ponytail-debt",
49
+ ".agents/skills/ponytail-gain",
50
+ ".agents/skills/ponytail-help",
51
+ ".agents/skills/ponytail-review",
52
+ ".agents/skills/prompt-review",
53
+ "!**/__pycache__/**",
54
+ "!**/*.pyc"
55
+ ],
56
+ "scripts": {
57
+ "knowledge": "bun .agents/skills/wtk-knowledge-check/scripts/cli.ts",
58
+ "review:graft:build": "graft build",
59
+ "review:graft:version": "graft --version",
60
+ "test": "bun test && node --test tests/installer/*.test.js",
61
+ "test:python": "git ls-files -- 'scripts/test_*.py' 'tools/test_*.py' | sort | while read test; do python3 \"$test\" || exit $?; done",
62
+ "test:all": "bun run test && bun run test:python"
63
+ },
64
+ "devDependencies": {
65
+ "@nanonets/graft": "0.10.1",
66
+ "@types/bun": "1.4.0",
67
+ "@types/node": "22.20.1",
68
+ "skills": "1.5.23",
69
+ "typescript": "5.9.3"
70
+ },
71
+ "dependencies": {
72
+ "smol-toml": "1.8.0"
73
+ }
74
+ }