@plazmodium/odin 0.3.3-beta → 0.3.5-beta

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 (133) hide show
  1. package/README.md +25 -10
  2. package/builtin/ODIN.md +1067 -0
  3. package/builtin/agent-definitions/README.md +170 -0
  4. package/builtin/agent-definitions/_shared-context.md +377 -0
  5. package/builtin/agent-definitions/architect.md +627 -0
  6. package/builtin/agent-definitions/builder.md +713 -0
  7. package/builtin/agent-definitions/discovery.md +293 -0
  8. package/builtin/agent-definitions/documenter.md +238 -0
  9. package/builtin/agent-definitions/guardian.md +1049 -0
  10. package/builtin/agent-definitions/integrator.md +189 -0
  11. package/builtin/agent-definitions/planning.md +236 -0
  12. package/builtin/agent-definitions/product.md +405 -0
  13. package/builtin/agent-definitions/release.md +205 -0
  14. package/builtin/agent-definitions/reviewer.md +447 -0
  15. package/builtin/agent-definitions/watcher.md +402 -0
  16. package/builtin/skills/api/graphql/SKILL.md +548 -0
  17. package/builtin/skills/api/grpc/SKILL.md +554 -0
  18. package/builtin/skills/api/rest-api/SKILL.md +469 -0
  19. package/builtin/skills/api/trpc/SKILL.md +503 -0
  20. package/builtin/skills/architecture/clean-architecture/SKILL.md +141 -0
  21. package/builtin/skills/architecture/domain-driven-design/SKILL.md +129 -0
  22. package/builtin/skills/architecture/event-driven/SKILL.md +145 -0
  23. package/builtin/skills/architecture/microservices/SKILL.md +143 -0
  24. package/builtin/skills/architecture/tla-precheck/SKILL.md +171 -0
  25. package/builtin/skills/backend/golang-gin/SKILL.md +141 -0
  26. package/builtin/skills/backend/nodejs-express/SKILL.md +277 -0
  27. package/builtin/skills/backend/nodejs-fastify/SKILL.md +152 -0
  28. package/builtin/skills/backend/python-django/SKILL.md +128 -0
  29. package/builtin/skills/backend/python-fastapi/SKILL.md +140 -0
  30. package/builtin/skills/database/mongodb/SKILL.md +132 -0
  31. package/builtin/skills/database/postgresql/SKILL.md +120 -0
  32. package/builtin/skills/database/prisma-orm/SKILL.md +366 -0
  33. package/builtin/skills/database/redis/SKILL.md +140 -0
  34. package/builtin/skills/database/supabase/SKILL.md +416 -0
  35. package/builtin/skills/devops/aws/SKILL.md +382 -0
  36. package/builtin/skills/devops/docker/SKILL.md +359 -0
  37. package/builtin/skills/devops/github-actions/SKILL.md +435 -0
  38. package/builtin/skills/devops/kubernetes/SKILL.md +459 -0
  39. package/builtin/skills/devops/terraform/SKILL.md +453 -0
  40. package/builtin/skills/frontend/alpine-dev/SKILL.md +27 -0
  41. package/builtin/skills/frontend/angular-dev/SKILL.md +28 -0
  42. package/builtin/skills/frontend/astro-dev/SKILL.md +28 -0
  43. package/builtin/skills/frontend/htmx-dev/SKILL.md +28 -0
  44. package/builtin/skills/frontend/nextjs-dev/SKILL.md +470 -0
  45. package/builtin/skills/frontend/react-patterns/SKILL.md +166 -0
  46. package/builtin/skills/frontend/svelte-dev/SKILL.md +28 -0
  47. package/builtin/skills/frontend/tailwindcss/SKILL.md +131 -0
  48. package/builtin/skills/frontend/vuejs-dev/SKILL.md +28 -0
  49. package/builtin/skills/generic-dev/SKILL.md +307 -0
  50. package/builtin/skills/testing/cypress/SKILL.md +372 -0
  51. package/builtin/skills/testing/jest/SKILL.md +176 -0
  52. package/builtin/skills/testing/playwright/SKILL.md +341 -0
  53. package/builtin/skills/testing/unit-tests-eval-sdd/SKILL.md +73 -0
  54. package/builtin/skills/testing/unit-tests-sdd/SKILL.md +83 -0
  55. package/builtin/skills/testing/vitest/SKILL.md +249 -0
  56. package/dist/adapters/skills/filesystem.d.ts +1 -0
  57. package/dist/adapters/skills/filesystem.d.ts.map +1 -1
  58. package/dist/adapters/skills/filesystem.js +6 -18
  59. package/dist/adapters/skills/filesystem.js.map +1 -1
  60. package/dist/adapters/skills/types.d.ts +1 -0
  61. package/dist/adapters/skills/types.d.ts.map +1 -1
  62. package/dist/adapters/workflow-state/in-memory.d.ts +10 -2
  63. package/dist/adapters/workflow-state/in-memory.d.ts.map +1 -1
  64. package/dist/adapters/workflow-state/in-memory.js +98 -5
  65. package/dist/adapters/workflow-state/in-memory.js.map +1 -1
  66. package/dist/adapters/workflow-state/supabase.d.ts +8 -2
  67. package/dist/adapters/workflow-state/supabase.d.ts.map +1 -1
  68. package/dist/adapters/workflow-state/supabase.js +204 -0
  69. package/dist/adapters/workflow-state/supabase.js.map +1 -1
  70. package/dist/adapters/workflow-state/types.d.ts +15 -1
  71. package/dist/adapters/workflow-state/types.d.ts.map +1 -1
  72. package/dist/builtin-assets.d.ts +8 -0
  73. package/dist/builtin-assets.d.ts.map +1 -0
  74. package/dist/builtin-assets.js +90 -0
  75. package/dist/builtin-assets.js.map +1 -0
  76. package/dist/domain/skill-draft-validation.d.ts +18 -0
  77. package/dist/domain/skill-draft-validation.d.ts.map +1 -0
  78. package/dist/domain/skill-draft-validation.js +100 -0
  79. package/dist/domain/skill-draft-validation.js.map +1 -0
  80. package/dist/domain/skill-proposals.d.ts +11 -0
  81. package/dist/domain/skill-proposals.d.ts.map +1 -0
  82. package/dist/domain/skill-proposals.js +103 -0
  83. package/dist/domain/skill-proposals.js.map +1 -0
  84. package/dist/init.js +69 -11
  85. package/dist/init.js.map +1 -1
  86. package/dist/schemas.d.ts +39 -1
  87. package/dist/schemas.d.ts.map +1 -1
  88. package/dist/schemas.js +30 -1
  89. package/dist/schemas.js.map +1 -1
  90. package/dist/server.js +38 -2
  91. package/dist/server.js.map +1 -1
  92. package/dist/tools/apply-migrations.d.ts +10 -0
  93. package/dist/tools/apply-migrations.d.ts.map +1 -1
  94. package/dist/tools/apply-migrations.js +10 -26
  95. package/dist/tools/apply-migrations.js.map +1 -1
  96. package/dist/tools/capture-learning.d.ts.map +1 -1
  97. package/dist/tools/capture-learning.js +14 -1
  98. package/dist/tools/capture-learning.js.map +1 -1
  99. package/dist/tools/get-skill-proposal-queue.d.ts +5 -0
  100. package/dist/tools/get-skill-proposal-queue.d.ts.map +1 -0
  101. package/dist/tools/get-skill-proposal-queue.js +21 -0
  102. package/dist/tools/get-skill-proposal-queue.js.map +1 -0
  103. package/dist/tools/get-skill-proposals.d.ts +4 -0
  104. package/dist/tools/get-skill-proposals.d.ts.map +1 -0
  105. package/dist/tools/get-skill-proposals.js +11 -0
  106. package/dist/tools/get-skill-proposals.js.map +1 -0
  107. package/dist/tools/prepare-phase-context.d.ts.map +1 -1
  108. package/dist/tools/prepare-phase-context.js +5 -0
  109. package/dist/tools/prepare-phase-context.js.map +1 -1
  110. package/dist/tools/publish-skill-proposal.d.ts +5 -0
  111. package/dist/tools/publish-skill-proposal.d.ts.map +1 -0
  112. package/dist/tools/publish-skill-proposal.js +57 -0
  113. package/dist/tools/publish-skill-proposal.js.map +1 -0
  114. package/dist/tools/record-skill-proposal-decision.d.ts +4 -0
  115. package/dist/tools/record-skill-proposal-decision.d.ts.map +1 -0
  116. package/dist/tools/record-skill-proposal-decision.js +22 -0
  117. package/dist/tools/record-skill-proposal-decision.js.map +1 -0
  118. package/dist/tools/record-skill-proposal-draft.d.ts +5 -0
  119. package/dist/tools/record-skill-proposal-draft.d.ts.map +1 -0
  120. package/dist/tools/record-skill-proposal-draft.js +65 -0
  121. package/dist/tools/record-skill-proposal-draft.js.map +1 -0
  122. package/dist/tools/sync-skill-proposal-candidates.d.ts +5 -0
  123. package/dist/tools/sync-skill-proposal-candidates.d.ts.map +1 -0
  124. package/dist/tools/sync-skill-proposal-candidates.js +20 -0
  125. package/dist/tools/sync-skill-proposal-candidates.js.map +1 -0
  126. package/dist/types.d.ts +41 -0
  127. package/dist/types.d.ts.map +1 -1
  128. package/dist/types.js +2 -0
  129. package/dist/types.js.map +1 -1
  130. package/migrations/009_skill_proposal_candidates.sql +124 -0
  131. package/migrations/010_skill_proposals.sql +36 -0
  132. package/migrations/README.md +6 -0
  133. package/package.json +5 -3
package/README.md CHANGED
@@ -6,13 +6,13 @@ A single-install MCP server that gives your AI coding agent an 11-phase developm
6
6
 
7
7
  ### 1. Install
8
8
 
9
- Preferred published-package flow after the first npm publish:
9
+ Preferred published-package flow:
10
10
 
11
11
  ```bash
12
12
  npx -y @plazmodium/odin init --project-root /path/to/your/project --tool opencode --write-mcp
13
13
  ```
14
14
 
15
- Current repo-checkout flow that works today:
15
+ Maintainer repo-checkout flow:
16
16
 
17
17
  ```bash
18
18
  cd runtime
@@ -23,24 +23,26 @@ npm run build
23
23
  ### 2. Bootstrap your project
24
24
 
25
25
  ```bash
26
- # Published-package MCP command snippets after the first npm publish
26
+ # Published-package MCP command snippets
27
27
  npx -y @plazmodium/odin init --project-root /path/to/your/project --tool amp --write-mcp
28
28
  npx -y @plazmodium/odin init --project-root /path/to/your/project --tool opencode --write-mcp
29
29
 
30
- # Source-checkout snippets while working from odin-workflow today
30
+ # Source-checkout snippets while working on Odin from this repo
31
31
  npm run init:project -- --project-root /path/to/your/project --tool amp --distribution source --write-mcp
32
32
  npm run init:project -- --project-root /path/to/your/project --tool codex --distribution source --write-mcp
33
33
  ```
34
34
 
35
35
  This creates:
36
36
  - `.odin/config.yaml` — runtime configuration (commit this)
37
+ - `.odin/ODIN.md` — bundled Odin framework guide for the harness to read locally
38
+ - `.odin/agents/definitions/` — bundled phase agent definitions and shared context
37
39
  - `.odin/skills/` — project-local skill overrides (commit this)
38
40
  - `.env.example` — required environment variables (commit this)
39
41
  - Your harness config file (`opencode.json`, `.mcp.json`, or `.codex/config.toml`, depending on tool)
40
42
 
41
43
  Important: Odin bootstraps with `runtime.mode: in_memory` by default so MCP wiring can work without external services. Switch `.odin/config.yaml` to `runtime.mode: supabase` when you are ready for persistent workflow state.
42
44
 
43
- Until `@plazmodium/odin` is actually published, use the repo-checkout `--distribution source` flow shown above.
45
+ If you are developing Odin from this repo, use the repo-checkout `--distribution source` flow shown above.
44
46
 
45
47
  If you are the maintainer preparing that publish, use [the npm publish guide](https://github.com/Plazmodium/odin-workflow/blob/dev/docs/guides/NPM-PUBLISH.md).
46
48
 
@@ -148,6 +150,12 @@ Your AI agent now has these tools available:
148
150
  | `odin.run_policy_checks` | Run deterministic policy checks for submitted claims |
149
151
  | `odin.verify_design` | Run formal design verification (TLA+ model checking) on a `.machine.ts` DSL file |
150
152
  | `odin.capture_learning` | Capture a reusable learning with semantic domain matching |
153
+ | `odin.get_skill_proposal_queue` | Inspect repeated unresolved learning topics that may warrant a generated skill draft |
154
+ | `odin.get_skill_proposals` | List drafted, approved, rejected, or published skill proposal records |
155
+ | `odin.record_skill_proposal_draft` | Persist a drafted generated-skill proposal and run deterministic validation |
156
+ | `odin.record_skill_proposal_decision` | Approve or reject a drafted skill proposal |
157
+ | `odin.publish_skill_proposal` | Publish an approved skill proposal into `.odin/skills/generated/` |
158
+ | `odin.sync_skill_proposal_candidates` | Persist the current deterministic proposal queue for later review/approval workflows |
151
159
  | `odin.get_feature_status` | Inspect feature state with workflow details |
152
160
  | `odin.verify_claims` | Check claim verification status |
153
161
  | `odin.get_claims_needing_review` | List claims waiting for watcher review |
@@ -273,8 +281,10 @@ Recommended harness behavior:
273
281
  ```text
274
282
  1. Call odin.prepare_phase_context(...)
275
283
  2. Build the agent prompt from:
284
+ - .odin/ODIN.md (framework-level rules)
276
285
  - context.agent.role_summary
277
286
  - context.agent.constraints
287
+ - context.agent.definition_markdown
278
288
  - context.development_evals.harness_prompt_block
279
289
  3. Keep context.development_evals.status_summary visible to the operator
280
290
  4. Do not treat eval instructions as a replacement for formal verification, Semgrep, tests, runtime checks, or watcher checks
@@ -284,14 +294,16 @@ Canonical eval-aware orchestration snippet:
284
294
 
285
295
  ```text
286
296
  When orchestrating Odin phases:
287
- 1. Call odin.prepare_phase_context({ feature_id, phase, agent_name }).
288
- 2. Build the active agent prompt from:
297
+ 1. Read `.odin/ODIN.md` once so the harness has the framework-level rules in project context.
298
+ 2. Call odin.prepare_phase_context({ feature_id, phase, agent_name }).
299
+ 3. Build the active agent prompt from:
289
300
  - context.agent.role_summary
290
301
  - context.agent.constraints
302
+ - context.agent.definition_markdown
291
303
  - context.development_evals.harness_prompt_block
292
- 3. Use odin.get_development_eval_status({ feature_id }) when you need focused eval state.
293
- 4. Record eval artifacts/gates with odin.record_eval_plan, odin.record_eval_run, and odin.record_quality_gate.
294
- 5. Never let Development Evals override odin.verify_design, odin.run_review_checks, tests, runtime verification, or watcher checks.
304
+ 4. Use odin.get_development_eval_status({ feature_id }) when you need focused eval state.
305
+ 5. Record eval artifacts/gates with odin.record_eval_plan, odin.record_eval_run, and odin.record_quality_gate.
306
+ 6. Never let Development Evals override odin.verify_design, odin.run_review_checks, tests, runtime verification, or watcher checks.
295
307
  ```
296
308
 
297
309
  If the harness wants a focused eval-only read path instead of parsing `odin.get_feature_status`, call:
@@ -327,6 +339,9 @@ Odin's learning system uses **semantic domain matching** to automatically route
327
339
  3. **Auto-targeting**: Matches passing both gates (≥ 1 strong keyword hit AND ≥ 0.60 relevance) are auto-declared as propagation targets. Weaker matches are returned as suggestions
328
340
  4. **Cross-feature corridors**: `odin.prepare_phase_context` retrieves related learnings from other features that share propagation targets, with tag intersection fallback
329
341
  5. **Resonance ranking**: Related learnings are ranked by domain density, corroboration (same-category learnings from different features), and recency — never modifying `confidence_score`
342
+ 6. **Proposal surfacing**: Repeated unresolved tags can be inspected via `odin.get_skill_proposal_queue` to identify candidate topics for governed skill drafting
343
+ 7. **Proposal persistence**: `odin.sync_skill_proposal_candidates` snapshots the current candidate queue into workflow state so later approval/draft flows and dashboard surfaces can build on stable relational state
344
+ 8. **Governed skill workflow**: draft generation, approval, and publish happen through `odin.record_skill_proposal_draft`, `odin.record_skill_proposal_decision`, and `odin.publish_skill_proposal` rather than automatic built-in self-modification
330
345
 
331
346
  ### Exploration
332
347