@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.
- package/CHANGELOG.md +410 -0
- package/LICENSE +21 -0
- package/README.md +168 -0
- package/bridge/mcp-server.cjs +14171 -0
- package/package.json +98 -0
- package/src/adapters/capabilities.ts +178 -0
- package/src/adapters/claude-code.ts +110 -0
- package/src/adapters/cline.ts +98 -0
- package/src/adapters/codex.ts +173 -0
- package/src/adapters/copilot.ts +106 -0
- package/src/adapters/cursor.ts +97 -0
- package/src/adapters/degradation.ts +95 -0
- package/src/adapters/index.ts +324 -0
- package/src/adapters/kiro-frontmatter.ts +139 -0
- package/src/adapters/kiro-inclusion.ts +86 -0
- package/src/adapters/kiro.ts +412 -0
- package/src/adapters/qdeveloper.ts +115 -0
- package/src/adapters/types.ts +81 -0
- package/src/adapters/windsurf.ts +96 -0
- package/src/admin.ts +283 -0
- package/src/asset-conventions.ts +118 -0
- package/src/attribution-backfill.ts +319 -0
- package/src/attribution-report.ts +95 -0
- package/src/attribution.ts +239 -0
- package/src/backends/github.ts +194 -0
- package/src/backends/http.ts +122 -0
- package/src/backends/index.ts +39 -0
- package/src/backends/local.ts +47 -0
- package/src/backends/s3.ts +157 -0
- package/src/backends/types.ts +59 -0
- package/src/base-cache.ts +270 -0
- package/src/browse-ui.ts +3754 -0
- package/src/browse.ts +1038 -0
- package/src/build.ts +1108 -0
- package/src/catalog.ts +204 -0
- package/src/cli-deprecated.ts +29 -0
- package/src/cli.ts +773 -0
- package/src/collection-admin.ts +287 -0
- package/src/collection-builder.ts +464 -0
- package/src/collections.ts +116 -0
- package/src/compatibility.ts +105 -0
- package/src/config.ts +743 -0
- package/src/eval/rubrics/kiro-progressive-steering.ts +841 -0
- package/src/eval.ts +1169 -0
- package/src/file-writer.ts +61 -0
- package/src/format-registry.ts +141 -0
- package/src/guild/auto-updater.ts +163 -0
- package/src/guild/backend-resolver.ts +49 -0
- package/src/guild/cli.ts +592 -0
- package/src/guild/collection-expander.ts +47 -0
- package/src/guild/global-cache.ts +247 -0
- package/src/guild/hook-generator.ts +100 -0
- package/src/guild/manifest.ts +154 -0
- package/src/guild/path-utils.ts +12 -0
- package/src/guild/sync.ts +622 -0
- package/src/guild/version-resolver.ts +42 -0
- package/src/help/metadata.ts +445 -0
- package/src/help/renderer.ts +265 -0
- package/src/help/typo-suggester.ts +25 -0
- package/src/hooks/expression.ts +493 -0
- package/src/hooks/pipeline.ts +141 -0
- package/src/import.ts +773 -0
- package/src/importers/claude-code.ts +134 -0
- package/src/importers/cline.ts +103 -0
- package/src/importers/codex.ts +140 -0
- package/src/importers/copilot.ts +103 -0
- package/src/importers/cursor.ts +105 -0
- package/src/importers/index.ts +390 -0
- package/src/importers/kiro.ts +110 -0
- package/src/importers/qdeveloper.ts +103 -0
- package/src/importers/types.ts +54 -0
- package/src/importers/windsurf.ts +104 -0
- package/src/install.ts +1005 -0
- package/src/manifest-admin.ts +306 -0
- package/src/mcp-bridge.ts +240 -0
- package/src/mutation/delta.ts +50 -0
- package/src/mutation/history.ts +66 -0
- package/src/mutation/operators.ts +524 -0
- package/src/mutation/runner.ts +332 -0
- package/src/new.ts +106 -0
- package/src/outcomes/collision.ts +127 -0
- package/src/outcomes/normalize.ts +208 -0
- package/src/outcomes/registry.ts +173 -0
- package/src/parser.ts +446 -0
- package/src/provenance-backfill-cli.ts +319 -0
- package/src/provenance-backfill.ts +520 -0
- package/src/publish.ts +354 -0
- package/src/reconcile-orchestrator.ts +502 -0
- package/src/reconcile-report-renderer.ts +176 -0
- package/src/resolve-body.ts +15 -0
- package/src/rosetta/builtins/compatibility-profiles.ts +297 -0
- package/src/rosetta/builtins/contracts.ts +1033 -0
- package/src/rosetta/builtins/pretty-printers/claude-code-native.ts +122 -0
- package/src/rosetta/builtins/pretty-printers/cline-native.ts +50 -0
- package/src/rosetta/builtins/pretty-printers/codex-native.ts +127 -0
- package/src/rosetta/builtins/pretty-printers/copilot-native.ts +50 -0
- package/src/rosetta/builtins/pretty-printers/cursor-native.ts +50 -0
- package/src/rosetta/builtins/pretty-printers/index.ts +81 -0
- package/src/rosetta/builtins/pretty-printers/kiro-native.ts +166 -0
- package/src/rosetta/builtins/pretty-printers/kiro-power.ts +108 -0
- package/src/rosetta/builtins/pretty-printers/kiro-skill.ts +88 -0
- package/src/rosetta/builtins/pretty-printers/qdeveloper-native.ts +51 -0
- package/src/rosetta/builtins/pretty-printers/superpowers.ts +97 -0
- package/src/rosetta/builtins/pretty-printers/windsurf-native.ts +50 -0
- package/src/rosetta/builtins/sources/claude-code-native.ts +348 -0
- package/src/rosetta/builtins/sources/cline-native.ts +176 -0
- package/src/rosetta/builtins/sources/codex-native.ts +343 -0
- package/src/rosetta/builtins/sources/copilot-native.ts +178 -0
- package/src/rosetta/builtins/sources/cursor-native.ts +176 -0
- package/src/rosetta/builtins/sources/index.ts +95 -0
- package/src/rosetta/builtins/sources/kiro-native.ts +462 -0
- package/src/rosetta/builtins/sources/kiro-power.ts +285 -0
- package/src/rosetta/builtins/sources/kiro-skill.ts +230 -0
- package/src/rosetta/builtins/sources/qdeveloper-native.ts +181 -0
- package/src/rosetta/builtins/sources/superpowers.ts +240 -0
- package/src/rosetta/builtins/sources/windsurf-native.ts +176 -0
- package/src/rosetta/builtins/targets/claude-code.ts +181 -0
- package/src/rosetta/builtins/targets/cline.ts +87 -0
- package/src/rosetta/builtins/targets/codex.ts +226 -0
- package/src/rosetta/builtins/targets/copilot.ts +103 -0
- package/src/rosetta/builtins/targets/cursor.ts +87 -0
- package/src/rosetta/builtins/targets/index.ts +60 -0
- package/src/rosetta/builtins/targets/kiro.ts +278 -0
- package/src/rosetta/builtins/targets/qdeveloper.ts +103 -0
- package/src/rosetta/builtins/targets/windsurf.ts +87 -0
- package/src/rosetta/canonical.ts +729 -0
- package/src/rosetta/compatibility.ts +432 -0
- package/src/rosetta/contracts.ts +329 -0
- package/src/rosetta/detector.ts +724 -0
- package/src/rosetta/diagnostics.ts +630 -0
- package/src/rosetta/engine-bootstrap.ts +103 -0
- package/src/rosetta/engine.ts +744 -0
- package/src/rosetta/index.ts +381 -0
- package/src/rosetta/inspection.ts +530 -0
- package/src/rosetta/plan.ts +448 -0
- package/src/rosetta/provenance-digest.ts +369 -0
- package/src/rosetta/reconcile.ts +812 -0
- package/src/rosetta/redaction.ts +467 -0
- package/src/rosetta/registry.ts +712 -0
- package/src/rosetta/renderers.ts +571 -0
- package/src/rosetta/request-guard.ts +335 -0
- package/src/rosetta/resolution.ts +419 -0
- package/src/rosetta/source-accounting.ts +233 -0
- package/src/rosetta/templates.ts +129 -0
- package/src/rosetta-cli.ts +717 -0
- package/src/rosetta-docs-generator.ts +793 -0
- package/src/rosetta-profiles-cli.ts +367 -0
- package/src/schemas.ts +1712 -0
- package/src/spec-coordination.ts +1141 -0
- package/src/temper.ts +747 -0
- package/src/template-bundle-loader.ts +312 -0
- package/src/template-engine.ts +53 -0
- package/src/translation-application-policy.ts +496 -0
- package/src/translation-orchestrator.ts +1013 -0
- package/src/translation-plan-applier.ts +473 -0
- package/src/tutorial.ts +305 -0
- package/src/validate.ts +1093 -0
- package/src/versioning.ts +553 -0
- package/src/wizard.ts +660 -0
- package/src/workspace.ts +237 -0
- package/templates/eval-contexts/claude-code.md.njk +6 -0
- package/templates/eval-contexts/cline.md.njk +6 -0
- package/templates/eval-contexts/copilot.md.njk +6 -0
- package/templates/eval-contexts/cursor.md.njk +6 -0
- package/templates/eval-contexts/kiro.md.njk +10 -0
- package/templates/eval-contexts/qdeveloper.md.njk +6 -0
- package/templates/eval-contexts/windsurf.md.njk +6 -0
- package/templates/harness-adapters/_base/attribution-footer.md.njk +17 -0
- package/templates/harness-adapters/_base/base.md.njk +16 -0
- package/templates/harness-adapters/claude-code/claude.md.njk +1 -0
- package/templates/harness-adapters/claude-code/mcp.json.njk +1 -0
- package/templates/harness-adapters/claude-code/settings.json.njk +1 -0
- package/templates/harness-adapters/claude-code/skill-library-index.md.njk +13 -0
- package/templates/harness-adapters/claude-code/skill.md.njk +19 -0
- package/templates/harness-adapters/cline/hook.sh.njk +4 -0
- package/templates/harness-adapters/cline/mcp.json.njk +1 -0
- package/templates/harness-adapters/cline/rule.md.njk +1 -0
- package/templates/harness-adapters/codex/agents-md.md.njk +6 -0
- package/templates/harness-adapters/codex/agents-pointer.md.njk +16 -0
- package/templates/harness-adapters/codex/skill.md.njk +27 -0
- package/templates/harness-adapters/copilot/agents.md.njk +1 -0
- package/templates/harness-adapters/copilot/instructions.md.njk +1 -0
- package/templates/harness-adapters/copilot/scoped.md.njk +6 -0
- package/templates/harness-adapters/cursor/mcp.json.njk +1 -0
- package/templates/harness-adapters/cursor/rule.md.njk +6 -0
- package/templates/harness-adapters/kiro/hook.json.njk +1 -0
- package/templates/harness-adapters/kiro/mcp.json.njk +1 -0
- package/templates/harness-adapters/kiro/power-steering.md.njk +3 -0
- package/templates/harness-adapters/kiro/power.md.njk +12 -0
- package/templates/harness-adapters/kiro/steering.md.njk +16 -0
- package/templates/harness-adapters/qdeveloper/agent.md.njk +1 -0
- package/templates/harness-adapters/qdeveloper/mcp.json.njk +1 -0
- package/templates/harness-adapters/qdeveloper/rule.md.njk +1 -0
- package/templates/harness-adapters/windsurf/mcp.json.njk +1 -0
- package/templates/harness-adapters/windsurf/rule.md.njk +1 -0
- package/templates/harness-adapters/windsurf/workflow.md.njk +1 -0
- package/templates/knowledge/hooks.yaml.njk +4 -0
- package/templates/knowledge/knowledge.md.njk +53 -0
- 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
|