@thinkingsage/kanon 0.8.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 (199) hide show
  1. package/CHANGELOG.md +410 -0
  2. package/LICENSE +21 -0
  3. package/README.md +168 -0
  4. package/bridge/mcp-server.cjs +14171 -0
  5. package/package.json +98 -0
  6. package/src/adapters/capabilities.ts +178 -0
  7. package/src/adapters/claude-code.ts +110 -0
  8. package/src/adapters/cline.ts +98 -0
  9. package/src/adapters/codex.ts +173 -0
  10. package/src/adapters/copilot.ts +106 -0
  11. package/src/adapters/cursor.ts +97 -0
  12. package/src/adapters/degradation.ts +95 -0
  13. package/src/adapters/index.ts +324 -0
  14. package/src/adapters/kiro-frontmatter.ts +139 -0
  15. package/src/adapters/kiro-inclusion.ts +86 -0
  16. package/src/adapters/kiro.ts +412 -0
  17. package/src/adapters/qdeveloper.ts +115 -0
  18. package/src/adapters/types.ts +81 -0
  19. package/src/adapters/windsurf.ts +96 -0
  20. package/src/admin.ts +283 -0
  21. package/src/asset-conventions.ts +118 -0
  22. package/src/attribution-backfill.ts +319 -0
  23. package/src/attribution-report.ts +95 -0
  24. package/src/attribution.ts +239 -0
  25. package/src/backends/github.ts +194 -0
  26. package/src/backends/http.ts +122 -0
  27. package/src/backends/index.ts +39 -0
  28. package/src/backends/local.ts +47 -0
  29. package/src/backends/s3.ts +157 -0
  30. package/src/backends/types.ts +59 -0
  31. package/src/base-cache.ts +270 -0
  32. package/src/browse-ui.ts +3754 -0
  33. package/src/browse.ts +1038 -0
  34. package/src/build.ts +1108 -0
  35. package/src/catalog.ts +204 -0
  36. package/src/cli-deprecated.ts +29 -0
  37. package/src/cli.ts +773 -0
  38. package/src/collection-admin.ts +287 -0
  39. package/src/collection-builder.ts +464 -0
  40. package/src/collections.ts +116 -0
  41. package/src/compatibility.ts +105 -0
  42. package/src/config.ts +743 -0
  43. package/src/eval/rubrics/kiro-progressive-steering.ts +841 -0
  44. package/src/eval.ts +1169 -0
  45. package/src/file-writer.ts +61 -0
  46. package/src/format-registry.ts +141 -0
  47. package/src/guild/auto-updater.ts +163 -0
  48. package/src/guild/backend-resolver.ts +49 -0
  49. package/src/guild/cli.ts +592 -0
  50. package/src/guild/collection-expander.ts +47 -0
  51. package/src/guild/global-cache.ts +247 -0
  52. package/src/guild/hook-generator.ts +100 -0
  53. package/src/guild/manifest.ts +154 -0
  54. package/src/guild/path-utils.ts +12 -0
  55. package/src/guild/sync.ts +622 -0
  56. package/src/guild/version-resolver.ts +42 -0
  57. package/src/help/metadata.ts +445 -0
  58. package/src/help/renderer.ts +265 -0
  59. package/src/help/typo-suggester.ts +25 -0
  60. package/src/hooks/expression.ts +493 -0
  61. package/src/hooks/pipeline.ts +141 -0
  62. package/src/import.ts +773 -0
  63. package/src/importers/claude-code.ts +134 -0
  64. package/src/importers/cline.ts +103 -0
  65. package/src/importers/codex.ts +140 -0
  66. package/src/importers/copilot.ts +103 -0
  67. package/src/importers/cursor.ts +105 -0
  68. package/src/importers/index.ts +390 -0
  69. package/src/importers/kiro.ts +110 -0
  70. package/src/importers/qdeveloper.ts +103 -0
  71. package/src/importers/types.ts +54 -0
  72. package/src/importers/windsurf.ts +104 -0
  73. package/src/install.ts +1005 -0
  74. package/src/manifest-admin.ts +306 -0
  75. package/src/mcp-bridge.ts +240 -0
  76. package/src/mutation/delta.ts +50 -0
  77. package/src/mutation/history.ts +66 -0
  78. package/src/mutation/operators.ts +524 -0
  79. package/src/mutation/runner.ts +332 -0
  80. package/src/new.ts +106 -0
  81. package/src/outcomes/collision.ts +127 -0
  82. package/src/outcomes/normalize.ts +208 -0
  83. package/src/outcomes/registry.ts +173 -0
  84. package/src/parser.ts +446 -0
  85. package/src/provenance-backfill-cli.ts +319 -0
  86. package/src/provenance-backfill.ts +520 -0
  87. package/src/publish.ts +354 -0
  88. package/src/reconcile-orchestrator.ts +502 -0
  89. package/src/reconcile-report-renderer.ts +176 -0
  90. package/src/resolve-body.ts +15 -0
  91. package/src/rosetta/builtins/compatibility-profiles.ts +297 -0
  92. package/src/rosetta/builtins/contracts.ts +1033 -0
  93. package/src/rosetta/builtins/pretty-printers/claude-code-native.ts +122 -0
  94. package/src/rosetta/builtins/pretty-printers/cline-native.ts +50 -0
  95. package/src/rosetta/builtins/pretty-printers/codex-native.ts +127 -0
  96. package/src/rosetta/builtins/pretty-printers/copilot-native.ts +50 -0
  97. package/src/rosetta/builtins/pretty-printers/cursor-native.ts +50 -0
  98. package/src/rosetta/builtins/pretty-printers/index.ts +81 -0
  99. package/src/rosetta/builtins/pretty-printers/kiro-native.ts +166 -0
  100. package/src/rosetta/builtins/pretty-printers/kiro-power.ts +108 -0
  101. package/src/rosetta/builtins/pretty-printers/kiro-skill.ts +88 -0
  102. package/src/rosetta/builtins/pretty-printers/qdeveloper-native.ts +51 -0
  103. package/src/rosetta/builtins/pretty-printers/superpowers.ts +97 -0
  104. package/src/rosetta/builtins/pretty-printers/windsurf-native.ts +50 -0
  105. package/src/rosetta/builtins/sources/claude-code-native.ts +348 -0
  106. package/src/rosetta/builtins/sources/cline-native.ts +176 -0
  107. package/src/rosetta/builtins/sources/codex-native.ts +343 -0
  108. package/src/rosetta/builtins/sources/copilot-native.ts +178 -0
  109. package/src/rosetta/builtins/sources/cursor-native.ts +176 -0
  110. package/src/rosetta/builtins/sources/index.ts +95 -0
  111. package/src/rosetta/builtins/sources/kiro-native.ts +462 -0
  112. package/src/rosetta/builtins/sources/kiro-power.ts +285 -0
  113. package/src/rosetta/builtins/sources/kiro-skill.ts +230 -0
  114. package/src/rosetta/builtins/sources/qdeveloper-native.ts +181 -0
  115. package/src/rosetta/builtins/sources/superpowers.ts +240 -0
  116. package/src/rosetta/builtins/sources/windsurf-native.ts +176 -0
  117. package/src/rosetta/builtins/targets/claude-code.ts +181 -0
  118. package/src/rosetta/builtins/targets/cline.ts +87 -0
  119. package/src/rosetta/builtins/targets/codex.ts +226 -0
  120. package/src/rosetta/builtins/targets/copilot.ts +103 -0
  121. package/src/rosetta/builtins/targets/cursor.ts +87 -0
  122. package/src/rosetta/builtins/targets/index.ts +60 -0
  123. package/src/rosetta/builtins/targets/kiro.ts +278 -0
  124. package/src/rosetta/builtins/targets/qdeveloper.ts +103 -0
  125. package/src/rosetta/builtins/targets/windsurf.ts +87 -0
  126. package/src/rosetta/canonical.ts +729 -0
  127. package/src/rosetta/compatibility.ts +432 -0
  128. package/src/rosetta/contracts.ts +329 -0
  129. package/src/rosetta/detector.ts +724 -0
  130. package/src/rosetta/diagnostics.ts +630 -0
  131. package/src/rosetta/engine-bootstrap.ts +103 -0
  132. package/src/rosetta/engine.ts +744 -0
  133. package/src/rosetta/index.ts +381 -0
  134. package/src/rosetta/inspection.ts +530 -0
  135. package/src/rosetta/plan.ts +448 -0
  136. package/src/rosetta/provenance-digest.ts +369 -0
  137. package/src/rosetta/reconcile.ts +812 -0
  138. package/src/rosetta/redaction.ts +467 -0
  139. package/src/rosetta/registry.ts +712 -0
  140. package/src/rosetta/renderers.ts +571 -0
  141. package/src/rosetta/request-guard.ts +335 -0
  142. package/src/rosetta/resolution.ts +419 -0
  143. package/src/rosetta/source-accounting.ts +233 -0
  144. package/src/rosetta/templates.ts +129 -0
  145. package/src/rosetta-cli.ts +717 -0
  146. package/src/rosetta-docs-generator.ts +793 -0
  147. package/src/rosetta-profiles-cli.ts +367 -0
  148. package/src/schemas.ts +1712 -0
  149. package/src/spec-coordination.ts +1141 -0
  150. package/src/temper.ts +747 -0
  151. package/src/template-bundle-loader.ts +312 -0
  152. package/src/template-engine.ts +53 -0
  153. package/src/translation-application-policy.ts +496 -0
  154. package/src/translation-orchestrator.ts +1013 -0
  155. package/src/translation-plan-applier.ts +473 -0
  156. package/src/tutorial.ts +305 -0
  157. package/src/validate.ts +1093 -0
  158. package/src/versioning.ts +553 -0
  159. package/src/wizard.ts +660 -0
  160. package/src/workspace.ts +237 -0
  161. package/templates/eval-contexts/claude-code.md.njk +6 -0
  162. package/templates/eval-contexts/cline.md.njk +6 -0
  163. package/templates/eval-contexts/copilot.md.njk +6 -0
  164. package/templates/eval-contexts/cursor.md.njk +6 -0
  165. package/templates/eval-contexts/kiro.md.njk +10 -0
  166. package/templates/eval-contexts/qdeveloper.md.njk +6 -0
  167. package/templates/eval-contexts/windsurf.md.njk +6 -0
  168. package/templates/harness-adapters/_base/attribution-footer.md.njk +17 -0
  169. package/templates/harness-adapters/_base/base.md.njk +16 -0
  170. package/templates/harness-adapters/claude-code/claude.md.njk +1 -0
  171. package/templates/harness-adapters/claude-code/mcp.json.njk +1 -0
  172. package/templates/harness-adapters/claude-code/settings.json.njk +1 -0
  173. package/templates/harness-adapters/claude-code/skill-library-index.md.njk +13 -0
  174. package/templates/harness-adapters/claude-code/skill.md.njk +19 -0
  175. package/templates/harness-adapters/cline/hook.sh.njk +4 -0
  176. package/templates/harness-adapters/cline/mcp.json.njk +1 -0
  177. package/templates/harness-adapters/cline/rule.md.njk +1 -0
  178. package/templates/harness-adapters/codex/agents-md.md.njk +6 -0
  179. package/templates/harness-adapters/codex/agents-pointer.md.njk +16 -0
  180. package/templates/harness-adapters/codex/skill.md.njk +27 -0
  181. package/templates/harness-adapters/copilot/agents.md.njk +1 -0
  182. package/templates/harness-adapters/copilot/instructions.md.njk +1 -0
  183. package/templates/harness-adapters/copilot/scoped.md.njk +6 -0
  184. package/templates/harness-adapters/cursor/mcp.json.njk +1 -0
  185. package/templates/harness-adapters/cursor/rule.md.njk +6 -0
  186. package/templates/harness-adapters/kiro/hook.json.njk +1 -0
  187. package/templates/harness-adapters/kiro/mcp.json.njk +1 -0
  188. package/templates/harness-adapters/kiro/power-steering.md.njk +3 -0
  189. package/templates/harness-adapters/kiro/power.md.njk +12 -0
  190. package/templates/harness-adapters/kiro/steering.md.njk +16 -0
  191. package/templates/harness-adapters/qdeveloper/agent.md.njk +1 -0
  192. package/templates/harness-adapters/qdeveloper/mcp.json.njk +1 -0
  193. package/templates/harness-adapters/qdeveloper/rule.md.njk +1 -0
  194. package/templates/harness-adapters/windsurf/mcp.json.njk +1 -0
  195. package/templates/harness-adapters/windsurf/rule.md.njk +1 -0
  196. package/templates/harness-adapters/windsurf/workflow.md.njk +1 -0
  197. package/templates/knowledge/hooks.yaml.njk +4 -0
  198. package/templates/knowledge/knowledge.md.njk +53 -0
  199. package/templates/knowledge/mcp-servers.yaml.njk +2 -0
package/README.md ADDED
@@ -0,0 +1,168 @@
1
+ # Kanon
2
+
3
+ Write knowledge once, compile to every AI coding assistant harness.
4
+
5
+ Kanon is a CLI tool that lets you author **knowledge artifacts** (skills, powers, rules, workflows, prompts, agents, templates, reference packs) in a single canonical format and compile them to any supported AI coding assistant.
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ # Build all artifacts for all harnesses
11
+ kanon build
12
+
13
+ # Build for a single harness
14
+ kanon build --harness kiro
15
+ kanon build --harness codex
16
+
17
+ # Validate artifacts (including security checks)
18
+ kanon validate
19
+ kanon validate --security
20
+
21
+ # Browse the catalog in your browser
22
+ kanon catalog browse
23
+
24
+ # Validate artifacts (including security checks)
25
+ bun run dev validate
26
+ bun run dev validate --security
27
+
28
+ # Browse the catalog in your browser
29
+ bun run dev catalog browse
30
+
31
+ # Install into your project
32
+ kanon install my-artifact --harness kiro --source .
33
+ kanon install my-artifact --harness codex --source .
34
+
35
+ # Scaffold a new knowledge artifact
36
+ kanon new my-artifact
37
+
38
+ # Guided walkthrough for first-time authors
39
+ bun run dev tutorial
40
+ ```
41
+
42
+ ## CLI Commands
43
+
44
+ | Command | Description |
45
+ |---------|-------------|
46
+ | `kanon build` | Compile knowledge artifacts to harness-native formats |
47
+ | `kanon install [artifact]` | Install compiled artifacts into the current project |
48
+ | `kanon new <name>` | Scaffold a new knowledge artifact |
49
+ | `kanon tutorial` | Guided walkthrough for first-time artifact authors |
50
+ | `kanon validate [path]` | Validate artifacts (add `--security` for injection/obfuscation checks) |
51
+ | `kanon catalog generate` | Generate `catalog.json` |
52
+ | `kanon catalog browse` | Browse the catalog in a local web UI |
53
+ | `kanon catalog export` | Export a self-contained static site for GitHub Pages |
54
+ | `kanon collection` | Manage knowledge collections (status, new, build) |
55
+ | `kanon import <path>` | Import from external sources (Kiro powers/skills) |
56
+ | `kanon publish` | Publish compiled artifacts to a release backend (GitHub, S3, HTTP) |
57
+ | `kanon eval [artifact]` | Run eval tests against compiled artifacts |
58
+ | `kanon guild` | Team-mode artifact distribution (init, sync, status, hook) |
59
+ | `kanon help [command]` | Show help for any command |
60
+
61
+ The deprecated `forge` alias remains available for one release, so existing Skill Forge commands such as `forge build --harness codex` and `forge install my-artifact --harness codex --source .` continue to work while projects migrate to `kanon`.
62
+
63
+ ## Supported Harnesses
64
+
65
+ | Harness | Output Formats |
66
+ |---------|---------------|
67
+ | **Kiro** | Steering files, hooks, powers, skills |
68
+ | **Claude Code** | CLAUDE.md, settings.json, MCP config |
69
+ | **OpenAI Codex** | AGENTS.md, native skills, MCP config |
70
+ | **GitHub Copilot** | Instructions, path-scoped instructions, AGENTS.md |
71
+ | **Cursor** | Rules, MCP config |
72
+ | **Windsurf** | Rules, workflows, MCP config |
73
+ | **Cline** | Toggleable rules, hook scripts, MCP config |
74
+ | **Amazon Q Developer** | Rules, agents, MCP config |
75
+
76
+ Each harness has a capability matrix declaring support levels (full, partial, none) for features like hooks, MCP servers, path scoping, and workflows. Unsupported features are handled via configurable degradation strategies (inline, comment, omit). Codex has no declarative event hooks, so hook definitions are rendered as manual guidance with warnings. Use `--strict` on build to surface unsupported capabilities explicitly.
77
+
78
+ ## Core Pipeline
79
+
80
+ ```
81
+ source → parse → adapt → write
82
+ ```
83
+
84
+ 1. Artifacts live in `knowledge/<name>/` as `knowledge.md` (YAML frontmatter + Markdown body) with optional `hooks.yaml`, `mcp-servers.yaml`, and `workflows/` phase files.
85
+ 2. The CLI parses frontmatter, validates with Zod schemas, and passes results to per-harness adapters.
86
+ 3. Each adapter is a pure function that uses Nunjucks templates to produce harness-native output in `dist/<harness>/<artifact>/`.
87
+
88
+ ## Project Structure
89
+
90
+ ```
91
+ kanon/
92
+ ├── knowledge/ # Canonical knowledge artifacts
93
+ │ └── <name>/ # Each artifact is a directory
94
+ │ ├── knowledge.md # YAML frontmatter + Markdown body
95
+ │ ├── hooks.yaml # Optional canonical hooks
96
+ │ ├── mcp-servers.yaml # Optional MCP server definitions
97
+ │ └── workflows/ # Optional phase files (workflow type)
98
+ ├── collections/ # Collection manifests (YAML, metadata only)
99
+ ├── templates/
100
+ │ ├── harness-adapters/ # Per-harness Nunjucks output templates
101
+ │ ├── knowledge/ # Scaffold templates for `kanon new`
102
+ │ └── eval-contexts/ # Harness context simulation for evals
103
+ ├── dist/ # Compiled per-harness output (generated)
104
+ ├── bridge/ # Compiled MCP server bridge (CJS, for Claude Code plugin)
105
+ ├── mcp-servers/ # Shared MCP server definitions
106
+ ├── evals/ # Cross-artifact eval configs
107
+ ├── changes/ # Towncrier-style changelog fragments
108
+ ├── docs/adr/ # Architecture Decision Records
109
+ ├── scripts/ # Build and release scripts
110
+ ├── .forge/ # Guild manifest and sync state
111
+ ├── src/ # CLI and core modules
112
+ │ ├── cli.ts # CLI entry point (Commander-based)
113
+ │ ├── schemas.ts # All Zod schemas (central validation)
114
+ │ ├── parser.ts # Frontmatter + body parser
115
+ │ ├── build.ts # Build pipeline orchestration
116
+ │ ├── validate.ts # Artifact validation logic
117
+ │ ├── catalog.ts # Catalog generation
118
+ │ ├── browse.ts # Catalog browser server + static export
119
+ │ ├── browse-ui.ts # Catalog browser SPA (inline HTML/CSS/JS)
120
+ │ ├── install.ts # Install artifacts from backends
121
+ │ ├── publish.ts # Publish artifacts to backends
122
+ │ ├── import.ts # Import from existing Kiro powers/skills
123
+ │ ├── versioning.ts # Version embedding and manifests
124
+ │ ├── workspace.ts # Workspace config for monorepo support
125
+ │ ├── eval.ts # Eval runner (promptfoo)
126
+ │ ├── mcp-bridge.ts # MCP server bridge entry point
127
+ │ ├── adapters/ # Per-harness compiler adapters (pure functions)
128
+ │ ├── backends/ # Pluggable install/publish backends (GitHub, S3, HTTP, local)
129
+ │ ├── guild/ # Manifest-driven distribution and sync
130
+ │ ├── importers/ # Multi-harness import parsers
131
+ │ ├── help/ # CLI help rendering
132
+ │ └── __tests__/ # All tests
133
+ ├── catalog.json # Machine-readable artifact catalog (generated)
134
+ ├── kanon.config.yaml # Kanon configuration (backends, workspace)
135
+ └── package.json
136
+ ```
137
+
138
+ ## Development
139
+
140
+ ```bash
141
+ # Run tests (all must pass)
142
+ bun test
143
+
144
+ # Type check
145
+ bun x tsc --noEmit
146
+
147
+ # Lint and format
148
+ bun run lint
149
+ bun run lint:fix
150
+ bun run format
151
+
152
+ # Compile the MCP bridge
153
+ bun run build:bridge
154
+
155
+ # Create a changelog fragment
156
+ bun run changelog:new --type added --message "description"
157
+
158
+ # Compile changelog
159
+ bun run changelog:compile
160
+ ```
161
+
162
+ ## Architecture Decisions
163
+
164
+ Key design choices are documented as [Architecture Decision Records](docs/adr/README.md) (30 ADRs and counting).
165
+
166
+ ## License
167
+
168
+ MIT