@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/CHANGELOG.md
ADDED
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.8.0] - 2026-09-08
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Progressive-steering rubric grader now grades the harness build, not its wrapper. When `--build` points at a directory that wraps the harness folder (`…/expected-build` or `…/expected-build/dist`), the grader descends into `kiro`/`dist/kiro` so artifact names resolve correctly instead of collapsing to `kiro`/`dist` and zeroing FMP/MD into a false RED. The grader now loads the workload that belongs to the build being graded: an explicit `--workload <path>` wins, else the scenario's own `workload.json` when `--build` points inside its `expected-build` tree, else the first discovered fixture workload. Adds the `--workload` CLI flag on `kanon eval rubric`.
|
|
14
|
+
|
|
15
|
+
## [0.7.1] - 2026-08-27
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- Import obra the-elements-of-style writing skill and support namespaced eval discovery
|
|
19
|
+
- Solr Compass: per-request contentRoot on artifact tools and a ~/.solrcompass project registry, plus a legible error when the content root has no catalog.json (ADR-0062)
|
|
20
|
+
- Rosetta Stone: write provenance at import and cache the base artifact (orchestration). The acquisition-driven import path (importOne with an acquisition context) now populates a machine-managed ProvenanceRecord — upstream, sourcePath, sourceFormat, sourceRevision, contract, baseDigest, importedAt — into the imported artifact frontmatter (Req 18.1) and writes the normalized, provenance-free Base_Artifact to a git-ignored upstream/.kanon-base/<upstream>/<name>@<digest> cache so re-sync can reconstruct the common ancestor for three-way reconciliation (Req 18.2). New src/base-cache.ts holds the pure provenance builder and the impure cache writer; all filesystem IO and the clock stay in the orchestration shell, outside the Pure_Translation_Boundary, per ADR-0049. Local path imports (no acquisition context) write no provenance and no cache. Adds upstream/.kanon-base/ to .gitignore.
|
|
21
|
+
- rosetta-stone: add Property 29 fast-check test verifying curation-preserving deterministic three-way reconciliation — curation preservation, fast-forward-only-when-unchanged, conflict-keeps-Ours-while-applying-non-conflicting-fields, deterministic merge-by-union, and repeat-run canonical equivalence with identical ordered diagnostics
|
|
22
|
+
- rosetta-stone: add Property 28 fast-check test verifying schema and registry documentation projections are complete and sound; export the doc-generator projection functions for testability
|
|
23
|
+
- Add one-shot validate:rosetta entry point that runs targeted Rosetta suites, the full Bun test suite, tsc --noEmit, and lint while preserving raw fast-check output and nonzero exit status
|
|
24
|
+
- rosetta-stone: add generated-guidance and executable-example tests — snapshot deterministic doc-generator output with checked-in parity, validate guidance code-example imports resolve against the public API, invoke CLI examples against a fixture, and fail when any registry/schema inventory entry is undocumented; make the doc generator importable via import.meta.main guard
|
|
25
|
+
- ---
|
|
26
|
+
type: fixed
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Fix eval discovery for scaffolded artifact directories and preserve numeric-looking admin frontmatter strings during YAML round-trips.
|
|
30
|
+
- Rosetta Stone: a Zod-validated functional-core translation subsystem with a new kanon rosetta CLI (formats, detect, inspect, translate — supporting explicit direction/variants, named acquisition/translation profiles, dry-run, strict mode, and versioned JSON output) and a stable library API exported from src/rosetta (RosettaStone, schemas/types, registry construction, built-in formats, detection, translation, inspection). Legacy import.ts, importers/, adapterRegistry, HARNESS_FORMAT_REGISTRY, kanon import, and the sync scripts continue to work as compatibility facades that delegate to Rosetta Stone during a documented migration window, emitting stable deprecation guidance; no legacy interface is removed in this release. Rosetta Stone enforces a pure-translation boundary: no filesystem, subprocess, network, environment, or Git access; source content is parsed and rendered as inert data (never executed); path normalization rejects traversal and normalized collisions; and sensitive values are handled fail-closed with reference-only redaction.
|
|
31
|
+
- Rosetta Stone: add the `kanon rosetta backfill` command that records a ProvenanceRecord for existing distilled artifacts by matching them to the current upstream by name, writes the machine-managed provenance block into knowledge.md, and seeds the git-ignored base cache (supports --dry-run and --json); retire the superseded drift scripts (compare-kiro-powers.sh, compare-kiro-powers-full.sh, diff-kiro-body.sh, diff-kiro-steering.sh) and sync-kiro-powers.sh in favor of config-driven sync-upstream.sh plus reconciliation
|
|
32
|
+
- Rosetta Stone: add reconciliation config validation and fixture regression tests (task 19.9). New validateFieldOwnershipPolicy in src/config.ts enforces Field_Ownership_Policy completeness (Req 18.14): it rejects a policy classifying any field outside ReconcilableFieldSchema, rejects an invalid ownership class, and rejects a policy that omits a classification for any reconcilable field, each as a clean field-addressed diagnostic; the documented DEFAULT_FIELD_OWNERSHIP_POLICY validates. Adds fixture-based re-sync regression tests driving reconcileUpstreams through all six scenarios (clean, fast-forward, conflict, orphaned, new, no-base), asserting deterministic ReconciliationReport ordering, conflict-field detail, plan production, and — the core guarantee — that no Curation_Loss occurs: curation-owned fields are preserved in every scenario (Req 18.6, 18.15).
|
|
33
|
+
- rosetta-stone: add Property 30 fast-check test verifying total, stable provenance outcomes — Base_Digest stability across repeated translation and reordered frontmatter, clean outcome on digest equality, the reduced-confidence two-way path on a missing base or failed provenance self-verification (never a silent overwrite), orphaned/new classification via the reconcile orchestrator, and exactly-one-outcome totality per reconciled artifact
|
|
34
|
+
- Rosetta Stone: compute and verify Base_Digest via the Canonical_Serializer. New src/rosetta/provenance-digest.ts adds computeBaseDigest — a deterministic sha256 over the serialized Theirs artifact reusing the Canonical_Serializer ordering so identical revisions yield identical digests (Req 18.2) — plus verifyProvenanceBase and selfVerifyReconcileInput, which recompute a candidate base digest against an artifact's recorded ProvenanceRecord.baseDigest and, on mismatch (hand-edited provenance), route reconciliation to the reduced-confidence two-way path with a warning diagnostic (Req 18.16). The digest math uses node:crypto and stays inside the Pure_Translation_Boundary (no fs/Git/clock); base-artifact cache IO remains in the orchestration shell per ADR-0049.
|
|
35
|
+
- Local-fixture sync integration tests for sync-upstream.sh and sync-kiro-powers.sh covering success, acquisition failure, pull-only, import-only, dry-run, Kiro power mapping, and multi-profile status isolation with no network access; fixed a set -e counter bug in sync-upstream.sh that made every successful run exit nonzero
|
|
36
|
+
- Rosetta Stone: add provenance and reconciliation schemas to src/schemas.ts — an optional machine-managed provenance block on FrontmatterSchema (registered in KNOWN_FRONTMATTER_FIELDS), plus FieldOwnershipPolicySchema with a documented default field-ownership policy, ReconciliationRequestSchema, ReconciliationDiagnosticSchema, ReconciliationResultSchema, and ReconciliationReportSchema for curation-preserving three-way re-synchronization.
|
|
37
|
+
- Rosetta Stone: add the reconcile collision policy and reconciliation report to the sync orchestrator. New src/reconcile-orchestrator.ts derives the reconcile set from ProvenanceRecords (never a hardcoded map), classifies orphaned (provenanced Ours whose upstream source is gone) and new (upstream artifact with no Ours counterpart), self-verifies the recorded base, runs the pure reconcileArtifact merge, and routes each merged artifact through the existing canonical serializer and plan validation path rather than bypassing it. Provenance-less artifacts are excluded and fall back to existing collision behavior. src/reconcile-report-renderer.ts renders the deterministic ReconciliationReport (ordered by outcome, then upstream, then artifact name) as human text and versioned schema-valid JSON.
|
|
38
|
+
- CI drift check that fails when committed plugin skills/ or MCP bridge are out of sync with knowledge/ source
|
|
39
|
+
- Make the committed MCP bridge build reproducible across CI and local environments by resolving its runtime root from the launched entrypoint instead of embedding the build machine's source path, and pin the generated-artifact check to the matching Bun compiler version.
|
|
40
|
+
- Rosetta Stone: implement the pure three-way reconciliation core in src/rosetta/reconcile.ts. `reconcileArtifact` merges Base, Ours, and Theirs KnowledgeArtifacts under a FieldOwnershipPolicy — curation-owned fields keep Ours, upstream-owned fields fast-forward to Theirs only when Ours equals Base (otherwise a field-addressed conflict that keeps Ours while non-conflicting fields are still applied), merge-by-union fields take a deterministic union minus upstream removals, and machine-owned fields are left for orchestration to recompute. Includes a reduced-confidence two-way path when the base is absent or unverified, deterministic diagnostics, and per-artifact outcome classification (clean/fast-forward/merged/conflict). Runs entirely within the Pure_Translation_Boundary with no filesystem, Git, or clock access.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
- Solr Compass: compass_reindex and compass_index_artifacts now delete an artifact's existing docs (top-level and chunks) before rewriting, so switching chunked/unchunked or removing an artifact no longer leaves orphaned chunk documents behind
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [0.7.0] - 2026-08-10
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
- Add Souk Compass indexing-pipeline integration coverage for language presets, root-scoped deduplication, boost-map search ordering, and Git-aware reindexing.
|
|
50
|
+
- Rosetta Stone deterministic canonical serializer with extra-field collision detection, YAML key-order normalization, and plan generation
|
|
51
|
+
- Implement deterministic inspection models in src/rosetta/inspection.ts
|
|
52
|
+
- Rosetta Stone immutable template bundle loader and pure renderer contract with in-memory Nunjucks rendering, content digest, and filesystem fallback prohibition
|
|
53
|
+
- Add acquisitions and translations profile records to ForgeConfigSchema with validation (Req 10.3-10.8, 13.12)
|
|
54
|
+
- Normalize legacy upstreams into typed acquisition/translation profiles (Req 10.6, 10.7, 13.12, 14.8)
|
|
55
|
+
- Tenant-scoped, durable memory records for Solr Compass: personal and org tenants with per-tenant collections, precedence-based conflict resolution, record supersession and retraction, validity windows, and configurable replication with backup and restore
|
|
56
|
+
- Implement deterministic pretty-printers for all source-capable format contracts (kiro-power, kiro-skill, superpowers, kiro-native, claude-code, codex, copilot, cursor, windsurf, cline, qdeveloper)
|
|
57
|
+
- Add Rosetta Stone target translators for Copilot, Cursor, Windsurf, Cline, and Q Developer
|
|
58
|
+
- Apply per-root boost maps to Souk Compass codebase search results
|
|
59
|
+
- Publish Solr Compass as a Bun-powered npm package with a pinned bunx launch, independent package and content roots, and patch-pinned SolrCloud images
|
|
60
|
+
- Add a Kiro Solr Compass Guided MCP Power artifact with seamless first-run Docker and SolrCloud initialization
|
|
61
|
+
- Document the shared Souk Compass indexing-policy architecture: centralized scanning, root-local configuration, language-aware chunking, client-side path boosting, and typed git-diff fallbacks.
|
|
62
|
+
- Implement target translators for Kiro, Claude Code, and Codex in src/rosetta/builtins/targets/
|
|
63
|
+
- Personal and organizational backup storage backends for Solr Compass: snapshots survive 'docker compose down -v' and rebuild, via a host-mounted local repository or a tenant's S3 bucket, with a portable snapshot manifest, an embedding-model compatibility guard, and a new compass_backup tool
|
|
64
|
+
- Add root-scoped deduplication property coverage for Souk Compass
|
|
65
|
+
- Use Git diffs to incrementally reindex changed Souk Compass codebase files, delete removed documents, and advance root commit metadata.
|
|
66
|
+
- Rosetta Stone source accounting and mapping helpers with consumed/preserved path tracking, field mappings, namespaced extra fields, and document order normalization
|
|
67
|
+
- Rosetta Stone built-in compatibility profiles seeded from ASSET_HARNESS_COMPATIBILITY and CAPABILITY_MATRIX with per-harness constants and lookup API
|
|
68
|
+
- Rosetta Stone transactional translation registry with atomic registration, frozen snapshots, and 12 built-in format contracts
|
|
69
|
+
- Rosetta Stone application policy evaluation and cross-request collision analysis with deterministic path normalization and configurable collision resolution
|
|
70
|
+
- Add shared format variant and option resolution module (src/rosetta/resolution.ts)
|
|
71
|
+
- Add Rosetta Stone public Zod schemas and inferred TypeScript types to src/schemas.ts covering format contracts, detection models, translation requests/results, diagnostics, compatibility profiles, plans, profiles, provenance, and machine-output envelopes
|
|
72
|
+
- Use Elixir-aware chunking when building Souk Compass codebase documents
|
|
73
|
+
- Add Rosetta Stone translation engine (src/rosetta/engine.ts) coordinating request guard, registry, detection, source translation, canonical validation, compatibility, target translation, and plan validation phases
|
|
74
|
+
- An 'aws' platform profile selecting Bedrock embeddings and S3 snapshot storage together with one shared region, and snapshot manifests moved onto Bun's Bun.file/S3File interface so local and S3 share one code path, the aws CLI becomes an optional fallback, and list finally sees snapshots in a bucket
|
|
75
|
+
- Add path-based source translators for kiro-power, kiro-skill, and superpowers formats under src/rosetta/builtins/sources/
|
|
76
|
+
- Rosetta Stone translation plan applier with atomic writes, symlink escape detection, collision rechecking, multi-file staging, and separate ApplicationReport
|
|
77
|
+
- Document root-scoped Git baselines for incremental Souk Compass indexing
|
|
78
|
+
- Store the current Git commit SHA on Souk Compass codebase index documents.
|
|
79
|
+
- Add harness-native source translators for Kiro, Claude Code, and Codex
|
|
80
|
+
- Add root-scoped content-hash deduplication to Souk Compass folder indexing.
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
- Move the paid LLM eval suite to a manual-dispatch workflow and drop the redundant per-PR eval job from CI; the deterministic Kiro progressive-steering rubric stays a PR gate
|
|
84
|
+
- Refactor Souk Compass full-folder indexing to use shared language-aware scanning and root-local ignore rules.
|
|
85
|
+
- Deduplicate Souk Compass reindex chunks by root-scoped content hash before embedding and upserting.
|
|
86
|
+
- Refactor Souk Compass incremental reindexing to use the shared file scanner with project presets, explicit excludes, and `.solrcompass-ignore` rules.
|
|
87
|
+
- Upgrade TypeScript to 7.0.2 and bring kanon and souk-compass dependencies (biome, zod, chalk, promptfoo, clack, rollup, AWS SDK, MCP SDK, fast-check) up to date
|
|
88
|
+
|
|
89
|
+
### Deprecated
|
|
90
|
+
- Deprecate type: "power" as an asset-taxonomy value in favor of type: "skill" + harness-config.kiro.format: "power"; migrate all 47 existing power-typed artifacts
|
|
91
|
+
|
|
92
|
+
### Fixed
|
|
93
|
+
- Reconcile agent asset-type compatibility with per-harness agent capability support, make temper agent-degradation detection content-aware, and add agent validation rules
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## [0.6.0] - 2026-07-27
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
- Imported the Library AI Workshop facilitator, cohort, reference-interview, and research-output-review skills from eudaemon-ai/academic-ai-library-workshop, including their course references and simulated practice data, and exposed them through a dedicated catalog collection.
|
|
100
|
+
- kanon spec next command to atomically pull the next ready task for an agent
|
|
101
|
+
- Config-driven upstream marketplace sync with superpowers import format
|
|
102
|
+
- kanon spec now reads and writes Kiro's [~] in-progress checkbox marker in tasks.md, keeping claim/next/release/done in sync with COORDINATION.md
|
|
103
|
+
- Added an optional Souk Compass practice module for safe semantic-search retrieval evaluation
|
|
104
|
+
- kiro-specs skill for reading, writing, and executing Kiro Specs with multi-agent coordination
|
|
105
|
+
- Added Windows installation instructions for Bun alongside the existing macOS/Linux instructions in tutorial.md and self-paced-module.md, covering PowerShell, package managers (npm, Scoop, WinGet), and WSL options.
|
|
106
|
+
- Souk Compass supports Amazon Titan embeddings on Bedrock as a first-class provider, with connection reuse and retry for long reindexes, `embed_provider` recorded on every document, and a `providerMismatch` warning from `compass_status` when a collection was built by a different model.
|
|
107
|
+
- Souk Compass can pack artifact sections into larger chunks so each vector fills more of the embedding model's context window.
|
|
108
|
+
- Added the JHU Editorial Check skill as a Kanon knowledge artifact with bundled style, brand-asset, website-audit, scoring, checker, evaluation, and sample references.
|
|
109
|
+
- kanon spec channel alias and a Kirouija glossary for the multi-agent coordination protocol
|
|
110
|
+
- Progressive Steering for the Kiro harness: explicit `harness-config.kiro.inclusion` field with three-level resolver precedence (harness-config > top-level > default), build pipeline Kiro Inclusion Summary and configurable `alwaysWarnThreshold` warning, install pipeline `--max-always` gating with post-install summary, `<!-- forge:kiro-inclusion: ... -->` audit comment in emitted steering files, cross-field validation rules and progressive conventions in the validator, conditional Kiro inclusion prompt in the wizard, and a new `progressive-steering` eval rubric with six metrics (AOCW, PR, FMP, MD, DER, WCA).
|
|
111
|
+
- Add a generated skill-library index skill listing all installed plugin skills, reframe the kanon skill and plugin manifests to lead with the skill library.
|
|
112
|
+
- Souk Compass indexes more than one repository into the shared codebase collection. Documents record `index_root`, `compass_search_codebase` accepts a `root` filter and reports each hit's repository, the folder tools accept a `collection` override, `compass_setup` gains a `create_collection` action, and `compass_status` reports per-repository counts.
|
|
113
|
+
- kanon spec commands to coordinate multi-agent work on Kiro Specs via COORDINATION.md
|
|
114
|
+
- Per-harness body overrides: a `bodyOverrides` schema field, `body.<harness>.md` loading in the parser, a `resolveBody` helper, resolution in the compile pipeline, and generated plugin skills for powers.
|
|
115
|
+
- Task dependencies (_Depends:_) and claim leases for parallel multi-agent spec work
|
|
116
|
+
|
|
117
|
+
### Changed
|
|
118
|
+
- Refresh contributor guidance for current Kanon, curriculum, harness, and Souk Compass workflows
|
|
119
|
+
- Reclassify kanon guide as a skill so it ships as a discoverable Claude Code plugin skill
|
|
120
|
+
- Preserve nested and non-Markdown workflow reference files during parsing so imported skills retain their progressive-disclosure trees and simulated fixtures.
|
|
121
|
+
- Renamed codeshop to whetstone throughout, and community archon to codefactory.
|
|
122
|
+
- Souk Compass builds an ESM bundle to the tracked `bridge/mcp-server.mjs` instead of a gitignored `dist/`, so published releases carry a runnable server.
|
|
123
|
+
- Updated committed Claude plugin skill generation to create parent directories for nested workflow references.
|
|
124
|
+
- Expanded the Kanon curriculum for Johns Hopkins Libraries staff with accurate CLI exercises, safe practice content, assessments, a capstone rubric, and a coordinator guide
|
|
125
|
+
- Souk Compass fuses hybrid search scores on the client (ADR-0052). Solr rejects a `{!knn}` clause nested inside `{!func}`, so vector and keyword searches now run in parallel and merge locally. `SoukVectorClient.search()` accepts only `vector` and `keyword`. In hybrid mode `score` is a fused value normalized per request rather than a raw Solr score, so scores are not comparable across queries.
|
|
126
|
+
|
|
127
|
+
### Deprecated
|
|
128
|
+
- Deprecate type: "power" as an asset-taxonomy value in favor of type: "skill" + harness-config.kiro.format: "power"; migrate all 47 existing power-typed artifacts
|
|
129
|
+
|
|
130
|
+
### Fixed
|
|
131
|
+
- Souk Compass now honours the catalog's `path` field when reading artifacts. Deriving the path from the artifact name excluded every nested collection, leaving 42 of 63 artifacts absent from the index.
|
|
132
|
+
- Fix plugin install showing 0 skills — generate and commit real SKILL.md files for Claude Code discovery
|
|
133
|
+
- Souk Compass reported a healthy SolrCloud collection as missing, because cores are named `<collection>_shard1_replica_n1` rather than after the collection.
|
|
134
|
+
- Souk Compass fails loudly when a configured embedding provider cannot start, instead of silently falling back to a different model and embedding queries in the wrong vector space.
|
|
135
|
+
- `compass_search` no longer fails in its default mode, which is hybrid.
|
|
136
|
+
- Souk Compass failed to connect with JSON-RPC error -32000 when installed as a plugin, because no build artifact was published.
|
|
137
|
+
- The Souk Compass embedding cache is keyed by provider and dimensionality. Keyed on text alone, switching providers served the previous model's vectors — meaningless similarity scores with nothing to indicate it.
|
|
138
|
+
- Reconcile agent asset-type compatibility with per-harness agent capability support, make temper agent-degradation detection content-aware, and add agent validation rules
|
|
139
|
+
- Every vector and hybrid search failed with HTTP 414 because a 1024-dimension query vector exceeds Jetty's default 8 KB header limit. The Solr container now raises `solr.jetty.request.header.size`, and searches POST their parameters.
|
|
140
|
+
- Souk Compass silently dropped roughly half of all indexed documents. A long numeric token in a vector triggered a Solr ClassCastException when it landed on a JSON parser buffer boundary; vector components are now rounded before transmission, which loses no precision the 7-bit quantised field would have kept.
|
|
141
|
+
- Souk Compass scopes `clear` and incremental reindex to the folder being indexed. Both previously deleted documents belonging to other indexed repositories.
|
|
142
|
+
- Stale codeshop references after the whetstone rename, and CodeQL findings for incomplete string escaping and an unused loop iteration variable.
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
## [0.5.0] - 2026-07-08
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
- Added Codex plugin packaging and hardened Codex harness output, including plugin manifest metadata, MCP config generation/import, native skill output, hook degradation warnings, and bundled bridge/catalog release assets.
|
|
149
|
+
- skill-forge power brought to parity with adr: now a source-generated knowledge artifact (knowledge/skill-forge) using the lean Kiro power flags, with License/Privacy/Support metadata, MIT license, jh-drcc collection correction, and eval coverage
|
|
150
|
+
- Kiro adapter: per-artifact harness-config.kiro flags inline-workflows and main-steering to emit lean, official-format powers (POWER.md + steering only, no inlined duplication or {name}.md duplicate)
|
|
151
|
+
- ADR-0044: propose renaming Kanon to Kanon (κανών)
|
|
152
|
+
- Expand alice-whiterabbit knowledge with doi-minting, preservation, and tutorials workflows
|
|
153
|
+
- archon-reference-pack knowledge artifact and archon collection
|
|
154
|
+
- Add Getting Started docs for project users, guild members, and skill-forge contributors
|
|
155
|
+
|
|
156
|
+
### Changed
|
|
157
|
+
- Renamed from Skill Forge to Kanon
|
|
158
|
+
- ADR power prepared for official Kiro power submission: lean Kiro-optimized POWER.md, hooks delivered as installable native v2 JSON in steering/hooks.md (no shipped .kiro.hook files), License/Privacy/Support metadata, and license corrected to MIT
|
|
159
|
+
- Upgrade Souk Compass to Solr 10 with scalar-quantized dense vectors and ACORN filtered search
|
|
160
|
+
- Eval suite improvements: fixed infra (cost→latency), realism (inline context for tool-less evals), content (mandatory first-response directives), and keyword alignment across codeshop, secure-by-default, and adr artifacts
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
- Kiro adapter now emits description field in steering frontmatter for progressive steering compatibility
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
### Added
|
|
167
|
+
- Added Codex plugin packaging and hardened Codex harness output, including `.codex-plugin/plugin.json`, Codex-safe MCP config, native skill output checks, Codex importer coverage, and bundled MCP bridge/catalog release assets.
|
|
168
|
+
|
|
169
|
+
### Changed
|
|
170
|
+
- **Renamed from Skill Forge to Kanon.** The CLI, package, and all references now use the new name.
|
|
171
|
+
|
|
172
|
+
**Migration guide for existing users:**
|
|
173
|
+
- **CLI**: `forge` → `kanon` (the old `forge` command still works with a deprecation warning for one release)
|
|
174
|
+
- **Config**: `forge.config.yaml` → `kanon.config.yaml` (old name still works with a deprecation warning)
|
|
175
|
+
- **Package**: `@thinkingsage/skill-forge` → `@thinkingsage/kanon`
|
|
176
|
+
- **Directory**: `skill-forge/` → `kanon/`
|
|
177
|
+
|
|
178
|
+
## [0.4.0] - 2026-05-03
|
|
179
|
+
|
|
180
|
+
### Added
|
|
181
|
+
- Add 4 eval dimensions: negative routing disambiguation (`not-icontains` on 10 routing tests), temperature sensitivity (7 tests at temp 0.3), prompt efficiency (4 tests with `cost` assertions at $0.10 threshold), and scenario-based shared concept adherence (7 tests covering vertical slices, deep modules, durable issues, contract-first, checksum discipline, domain language).
|
|
182
|
+
- Hash-based deep links in browse SPA — artifacts are now bookmarkable and shareable via `#artifact/<name>` URL fragments. Browser back/forward navigation supported.
|
|
183
|
+
- Codeshop skill #21: `migrate` — reliable data migration with checksum verification across 5 phases (Inventory, Plan, Dry-Run, Execute, Verify). Adds Migration Checksum Discipline shared concept and Migration Chain to workflow composition.
|
|
184
|
+
- Add `--record` and `--trend` flags to `forge eval` for evolutionary prompt improvement tracking. `--record` appends per-run scores to `evals/history.jsonl`; `--trend` prints a table with sparkline showing score progression over time.
|
|
185
|
+
- Upgrade Souk Compass from Solr 9 to Solr 10 with scalar quantized dense vectors (~4x memory reduction), ACORN filtered search support, and enhanced kNN query parameters. Requires reindexing after upgrade.
|
|
186
|
+
- New `release-manager` companion power — tool-agnostic release lifecycle management with 4-phase cut-release workflow (Assess, Draft, Cut, Announce). Multi-harness support. Detects whatever release tooling the project uses.
|
|
187
|
+
- Multi-turn workflow evals for `integrate` (5 tests) and `migrate` (5 tests) simulating phase progression with deterministic + semantic assertions. Chain transition evals (5 tests) verifying correct next-workflow suggestions. Deterministic `icontains` assertions added to all 14 routing eval tests. All evals upgraded from Claude Sonnet 4 to Claude Sonnet 4.6.
|
|
188
|
+
- Codeshop skill #20: `integrate` — wire external systems through contract-first adapters with 5-phase workflow (Discover, Contract, Wire, Harden, Verify). Adds Contract-First Integration shared concept and Integration Chain to workflow composition.
|
|
189
|
+
- New `secure-by-default` companion power — STRIDE threat modeling, auth/authz flow review, and secure coding reference (OWASP, input validation, secret hygiene). Multi-harness support. User-invoked only.
|
|
190
|
+
- Structural validation tests for codeshop workflow phase sequencing, chain validity, and entry/exit criteria alignment — 11 tests covering dangling references, linear phase ordering, orphan detection, chain-to-router consistency, and phase numbering.
|
|
191
|
+
|
|
192
|
+
### Changed
|
|
193
|
+
- Revised ADR power (v0.4.0): expanded troubleshooting section, added configuration section, broadened changelog tool detection guidance, improved steering file descriptions with when-to-use context, added hook portability notes.
|
|
194
|
+
- Bump promptfoo dependency from ^0.121.5 to ^0.121.9.
|
|
195
|
+
- Remove `dist/` and `catalog.json` from git tracking. Both are now gitignored and built fresh in CI — dist is uploaded as a CI artifact on every PR and attached as a tarball to GitHub Releases. The `dist-drift` workflow is removed.
|
|
196
|
+
|
|
197
|
+
### Fixed
|
|
198
|
+
- Place forge:version comment after YAML frontmatter instead of before it, fixing Kiro power metadata parsing
|
|
199
|
+
- Fix codeshop frontmatter: `name` field to lowercase `codeshop`, keyword `codebase-architecture` to `architecture`. Fix CategoryEnum test to include `writing` category (10 categories).
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
## [0.3.0] - 2026-04-27
|
|
203
|
+
|
|
204
|
+
### Added
|
|
205
|
+
- Added MCP bridge compilation smoke test to CI (`bun run build:bridge` + `node bridge/mcp-server.cjs --version`)
|
|
206
|
+
- Added ADR-0031 documenting Souk Compass as a standalone MCP server for Solr-backed semantic search with pluggable embedding providers and multi-tier caching.
|
|
207
|
+
- ADR-0030: authoring-level version embedding and manifests
|
|
208
|
+
- Multi-harness `forge import --harness` command supporting all 7 harness-native formats (Kiro, Claude Code, Copilot, Cursor, Windsurf, Cline, Q Developer) with auto-detection, --force, and --dry-run
|
|
209
|
+
- Admin UI components in Browse SPA: capability badges with color-coded matrix grid, inline temper preview panel, import modal with file scanner, version display with upgrade button, workspace tab with project management, interactive dependency graph (inline SVG with force-directed layout), and build dashboard with config persistence and history
|
|
210
|
+
- Interactive `forge temper` command for previewing the compiled AI experience per artifact-harness pair, with terminal output, JSON mode, side-by-side comparison (--compare), and web preview (--web)
|
|
211
|
+
- Admin API endpoints for capabilities (GET /api/capabilities), temper (POST /api/temper), import scan/execute (POST /api/import), versions/upgrade (GET/POST /api/versions, /api/upgrade), workspace (GET/PUT /api/workspace), dependency graph (GET /api/graph), and build trigger/status (POST /api/build, GET /api/build/status)
|
|
212
|
+
- Comprehensive unit test suite for Souk Compass MCP server — 191 tests across 9 files covering SoukVectorClient, embedding provider factory, tool handlers, MCP error boundary, CachedEmbeddingProvider, chunker, serialization, workspace profiler, and hook/plugin validation.
|
|
213
|
+
- Added `changelog-check` CI job that enforces a changelog fragment exists for PRs touching source files, with `skip-changelog` label escape hatch
|
|
214
|
+
- Added daily `dist-drift.yml` scheduled workflow that rebuilds artifacts and MCP bridge on `main` and warns if `dist/` or `bridge/` have drifted from source
|
|
215
|
+
- Harness capability matrix declaring support levels (full/partial/none) for 8 capabilities across all 7 harnesses, with configurable degradation strategies (inline/comment/omit) applied automatically during build
|
|
216
|
+
- Added promptfoo eval suites for codeshop (routing, skill-quality, shared-concepts), all 8 byron-powers artifacts, ADR (workflow-correctness, template-quality, generate-from-diff, health-check), and karpathy-mode (principle-enforcement, tradeoff-awareness) — 71 tests total
|
|
217
|
+
- Multi-repo and monorepo workspace support via forge.config.yaml with multiple knowledge sources, per-project harness/artifact configuration, workspace-aware build and install, and --project flag
|
|
218
|
+
- Artifact versioning with semver version embedding in compiled output, .forge-manifest.json sidecar files, `forge upgrade` command with migration script support, --force, and --dry-run
|
|
219
|
+
|
|
220
|
+
### Changed
|
|
221
|
+
- Updated README with complete CLI command reference, project structure, capability matrix, and development instructions
|
|
222
|
+
- Trimmed knowledge artifact keywords to 6-19 per artifact, removed keyword/category overlaps, established canonical 10-category taxonomy, and added 'writing' to CategoryEnum in schemas.ts
|
|
223
|
+
- Added Bun dependency caching (`~/.bun/install/cache` + `node_modules`) keyed on `bun.lock` hash to all GitHub Actions workflows (CI, release, audit, pages)
|
|
224
|
+
- Added event-driven hooks to five neon-caravan artifacts (commit-craft, review-ritual, type-guardian, debug-journal, karpathy-mode) and added missing Overview, Examples, and Troubleshooting sections to all knowledge artifacts per Kiro Power best practices.
|
|
225
|
+
- Switched Souk Compass local Solr from standalone mode to SolrCloud (1 node + ZooKeeper), enabling the Collections API for programmatic collection management and configset-based schema deployment. Updated health check to use ping endpoint for mode-agnostic operation.
|
|
226
|
+
- Added Overview, Examples, Troubleshooting, and Steering Files listing sections to all eight byron-powers artifacts (novelist, fantasy-novelist, scifi-novelist, mystery-series-novelist, series-continuity, book-agent-publicist, technical-author, proofreader-review-checklist) per Kiro Power best practices.
|
|
227
|
+
- Updated the Hello test artifact with a fun onboarding section that greets users in 20 languages and bumped version to 0.2.0.
|
|
228
|
+
- Split CI into parallel jobs (`lint-and-typecheck`, `test`, `validate-and-build`) so lint, tests, and artifact validation run concurrently
|
|
229
|
+
- Added `concurrency` group with `cancel-in-progress: true` to CI so rapid pushes to a PR cancel stale in-progress runs
|
|
230
|
+
- Rewrote top-level README with current collection counts, full repo structure, and complete Quick Start
|
|
231
|
+
- Replaced stub skill-forge CONTRIBUTING with code-level guide covering module map, adapter/backend patterns, testing conventions, and common pitfalls
|
|
232
|
+
- Overhauled CLI help metadata with thorough examples, option groups, and coverage for all commands including catalog export, guild, and collection
|
|
233
|
+
- Updated the knowledge.md scaffold template to include skeleton Overview, Best Practices, Examples, and Troubleshooting sections so new artifacts start with the recommended Kiro Power structure.
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
- Fixed the CI eval job to use the eval suite's Bedrock credentials, and skip forked pull request runs where the required secrets are unavailable.
|
|
237
|
+
- Fixed all Biome lint errors and TypeScript type-check failures: resolved Bun Dirent type incompatibility in versioning.ts, tightened mapKiroEvent return type to CanonicalEvent, added missing changelog/migrations fields to CatalogEntry test factories, added buildHistory to BrowseState test fixtures, removed unused imports, applied Biome formatting, and suppressed intentional ANSI escape regex checks
|
|
238
|
+
- Updated GitHub workflows to install Node 22 and run repository automation from the `skill-forge` directory so CI, audit, CodeQL, and release jobs target the actual project files.
|
|
239
|
+
- Fixed SQLite BLOB deserialization in CachedEmbeddingProvider — Bun's bun:sqlite returns Uint8Array for BLOB columns, now uses TextDecoder instead of toString() for correct embedding recovery.
|
|
240
|
+
- Removed hardcoded test count from PR template checklist to prevent staleness
|
|
241
|
+
- Static catalog export: use replacer function in generateStaticHtmlPage to prevent String.replace dollar-sign corruption of embedded JSON
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
## [0.2.0] - 2026-04-21
|
|
245
|
+
|
|
246
|
+
### Added
|
|
247
|
+
- Added manifest entry management to `forge catalog browse` — view manifest entries with sync status indicators, add/edit/remove entries via REST API (`GET/POST/PUT/DELETE /api/manifest/entries`), and display synced/outdated/missing status from sync-lock comparison
|
|
248
|
+
- Added 4 property-based tests for collection admin correctness (Properties 10–12, 16) — YAML round-trip, unknown key preservation, validation consistency, and filtering correctness.
|
|
249
|
+
- Added unit tests for `manifest-admin.ts` — 9 tests covering `readManifest`, `readSyncLock`, `computeSyncStatus` (synced/outdated/missing), and error paths for `addManifestEntry`, `editManifestEntry`, `removeManifestEntry`.
|
|
250
|
+
- Added collection management to `forge catalog browse` — list, view, create, edit, and delete collection YAML files via REST API (`GET/POST/PUT/DELETE /api/collections`) with trust-level and tag filtering in the UI
|
|
251
|
+
- Added 9 property-based tests for artifact admin correctness (Properties 1–9) — frontmatter serialization round-trip, validation consistency, kebab-case enforcement, file structure verification, update preservation, delete removal, catalog consistency, toKebabCase output, and comma-separated parsing.
|
|
252
|
+
- Added unit tests for `admin.ts` — 20 tests covering `serializeFrontmatter`, `validateArtifactInput`, `toKebabCase`, and error paths for `createArtifact`, `updateArtifact`, `deleteArtifact`.
|
|
253
|
+
- Added unit tests for `collection-admin.ts` — 15 tests covering `parseCollectionFile`, `serializeCollection`, `validateCollectionInput`, `getCollection` member resolution, and error paths for CRUD operations.
|
|
254
|
+
- Documented browse UI module extraction architecture (ADR-0025).
|
|
255
|
+
- Added 30 integration tests for browse server mutation endpoints — artifact/collection/manifest CRUD round-trips, sync status verification, Content-Type validation, and structured error responses (400/404/409).
|
|
256
|
+
- Added tab navigation (Artifacts | Collections | Manifest) to `forge catalog browse` with a shared UI design system including design tokens, reusable card/form/badge/toast/modal components, and context-aware create buttons
|
|
257
|
+
- Added full CRUD capabilities to `forge catalog browse` for knowledge artifacts — create, edit, and delete artifacts directly from the browser UI via `POST /api/artifact`, `PUT /api/artifact/:name`, and `DELETE /api/artifact/:name` endpoints with validation, conflict detection, and automatic catalog refresh
|
|
258
|
+
- Added 3 property-based tests for manifest admin correctness (Properties 13–15) — sync status computation, entry validation delegation, and top-level field preservation during mutations.
|
|
259
|
+
- Extract browse UI template (`generateHtmlPage`, `generateStaticHtmlPage`, `escapeHtml`) into dedicated `browse-ui.ts` module, reducing `browse.ts` from ~2950 to ~500 lines (ADR-0025).
|
|
260
|
+
- Documented browse server admin CRUD architecture with mutable state wrapper and modular admin layers (ADR-0024)
|
|
261
|
+
|
|
262
|
+
### Fixed
|
|
263
|
+
- Fix GitHub Pages workflow to deploy from `jhu-main` instead of `main` so the catalog browser shows all knowledge artifacts
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## [0.1.1] - 2026-04-13
|
|
267
|
+
|
|
268
|
+
### Added
|
|
269
|
+
- Added `src/asset-conventions.ts` registry mapping each of the 8 asset types to required files, optional files, and type-specific validation rule keys
|
|
270
|
+
- Added `forge import <path> [--all] [--format] [--dry-run] [--collections]` command for ingesting external Kiro powers (`POWER.md` + `steering/`) and skills (`SKILL.md` + `references/`) into the skill-forge knowledge directory
|
|
271
|
+
- Added forge tutorial command providing a step-by-step guided walkthrough for first-time users covering artifact creation via the interactive wizard, generated file exploration, and building with progress indicators and jargon-free language
|
|
272
|
+
- Auto-fetch from configured backend when artifact or collection is not in global cache (guild init)
|
|
273
|
+
- Added maturity badge, trust lane label, and maturity filter to catalog browser card and detail views in `forge catalog browse`
|
|
274
|
+
- Add jhu collection and backend (jhu-sheridan-libraries/agentic-skill-forge)
|
|
275
|
+
- Documented decision to use an auto-detecting multi-format importer for `forge import` over a hardcoded single-format path, enabling extensibility to future source formats without CLI surface changes (ADR-0019)
|
|
276
|
+
- Implemented Kiro harness adapter with steering files, hook JSON, POWER.md, spec-hooks, and MCP config generation
|
|
277
|
+
- Added `hello-world` example power and full `kiro-official` collection knowledge definitions covering 26 powers:
|
|
278
|
+
|
|
279
|
+
- `arm-soc-migration`
|
|
280
|
+
- `aws-agentcore`
|
|
281
|
+
- `aws-amplify`
|
|
282
|
+
- `aws-devops-agent`
|
|
283
|
+
- `aws-healthomics`
|
|
284
|
+
- `aws-infrastructure-as-code`
|
|
285
|
+
- `aws-mcp`
|
|
286
|
+
- `aws-observability`
|
|
287
|
+
- `aws-sam`
|
|
288
|
+
- `checkout-api-reference`
|
|
289
|
+
- `cloud-architect`
|
|
290
|
+
- `cloudwatch-application-signals`
|
|
291
|
+
- `datadog`
|
|
292
|
+
- `dynatrace`
|
|
293
|
+
- `figma`
|
|
294
|
+
- `gcp-aws-migrate`
|
|
295
|
+
- `graviton-migration-power`
|
|
296
|
+
- `neon`
|
|
297
|
+
- `postman`
|
|
298
|
+
- `power-builder`
|
|
299
|
+
- `saas-builder`
|
|
300
|
+
- `spark-troubleshooting-agent`
|
|
301
|
+
- `stackgen`
|
|
302
|
+
- `strands`
|
|
303
|
+
- `stripe`
|
|
304
|
+
- `terraform`
|
|
305
|
+
- Added forge catalog browse subcommand with local web-based catalog browser featuring search, harness/type/category filtering, and artifact detail view with knowledge.md preview
|
|
306
|
+
- Added AssetTypeSchema expanding the `type` field to 8 values (skill, power, rule, workflow, agent, prompt, template, reference-pack) as a semantic asset taxonomy, with ArtifactTypeSchema kept as a backward-compatible alias
|
|
307
|
+
- Implemented forge new scaffolding command with template-driven artifact creation
|
|
308
|
+
- Added DevSecOps GitHub Actions workflows: CodeQL static analysis (src/ and bridge/ with security-extended queries), scheduled dependency audit with bun audit and Gitleaks secret scanning (custom rules for mcp-servers.yaml env blocks), OSSF Scorecard, Dependabot weekly updates, path-based PR labeler, and stale issue management
|
|
309
|
+
- Implemented Nunjucks template engine module with inheritance support and custom filters
|
|
310
|
+
- Added --yes flag to forge new command to skip the interactive wizard and use template defaults for CI and scripting use cases
|
|
311
|
+
- Added `forge help [command]` subcommand as an alternative to --help, with contextual command help and unknown command error handling
|
|
312
|
+
- Added context-bazaar Claude Code plugin packaging with `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `.mcp.json`, and a bundled MCP bridge (`bridge/mcp-server.cjs`) exposing `catalog_list`, `artifact_content`, and `collection_list` tools
|
|
313
|
+
- Added styled help screens with chalk color styling, aligned command tables, per-command usage examples, grouped options, and --no-color support via a pure-function Help_Renderer module
|
|
314
|
+
- Added CONTRIBUTING.md covering artifact scaffolding, frontmatter fields, quality bar, collection assignment, import workflow, development commands, changelog fragment process, and pull request checklist
|
|
315
|
+
- Added `forge.config.yaml` per-repo configuration and `~/.forge/config.yaml` user-global configuration loaded via `src/config.ts`; declares named install backends, publish target, and governance author allowlists
|
|
316
|
+
- Added asset type select prompt to the `forge new` interactive wizard with descriptions for all 8 asset types; prompt is skipped when `--type` is passed on the command line
|
|
317
|
+
- Added harness-specific emoji icons to the catalog browser filter checkboxes, card footer, and detail view (👻 kiro, 🤖 claude-code, 🐙 copilot, 🖱️ cursor, 🏄 windsurf, 🔧 cline, ☁️ qdeveloper)
|
|
318
|
+
- Added ecosystem, depends, and enhances metadata fields to frontmatter and catalog schemas with kebab-case validation
|
|
319
|
+
- Documented decision to declare collection membership in artifact frontmatter rather than in collection manifests, with four alternatives considered and rationale for eliminating the two-source-of-truth problem (ADR-0016)
|
|
320
|
+
- Documented decision to use a pre-bundled MCP server as the Claude Code plugin integration layer over pure skill file distribution or a slash command, enabling interactive parameterised catalog queries from inside the assistant (ADR-0020)
|
|
321
|
+
- Added `--strict` flag to `forge build` that treats compatibility warnings (partial or missing harness support for an asset type) as hard errors
|
|
322
|
+
- Documented decision to use the `gh` CLI rather than direct GitHub REST API calls for release creation and asset download, delegating auth management to an already-installed tool (ADR-0018)
|
|
323
|
+
- Added CollectionSchema for metadata-only collection manifests in `collections/*.yaml`; collection membership is declared by artifacts in their own frontmatter via `collections: [name]` rather than listed in the manifest, eliminating stale cross-references
|
|
324
|
+
- Added multi-root source scanning so `forge build`, `forge validate`, and `forge catalog generate` scan both `knowledge/` and `packages/` directories, skipping roots that do not exist
|
|
325
|
+
- Added `src/collections.ts` with `loadCollections`, `validateArtifactCollectionRefs`, and `buildCollectionMembership` for loading collection manifests, cross-validating artifact collection references, and computing derived membership maps
|
|
326
|
+
- Added `forge publish` command running the full pipeline (validate --strict, build, catalog, release-manifest.json, per-harness tarballs) and publishing via `gh release create` for GitHub or `aws s3 sync` for S3; `--dry-run` packages without uploading
|
|
327
|
+
- Added pluggable backend abstraction in `src/backends/` with a shared `ArtifactBackend` interface and four implementations: `LocalBackend` (filesystem), `GitHubBackend` (gh CLI), `S3Backend` (aws CLI, compatible with R2/MinIO), and `HttpBackend` (generic HTTPS with bearer token support)
|
|
328
|
+
- Added asset × harness compatibility matrix in `src/compatibility.ts` so `forge build` skips type/harness combinations with no meaningful output and emits partial-support warnings for degraded combinations
|
|
329
|
+
- Documented decision to use a pluggable ArtifactBackend interface over hardcoding GitHub as the only install/publish target, enabling private S3 and HTTP backends alongside the public GitHub releases backend (ADR-0017)
|
|
330
|
+
- Implemented Cursor, Windsurf, Cline, and Q Developer harness adapters
|
|
331
|
+
- Documented decision to add `--security` flag to `forge validate` over a standalone command or CI-only approach, integrating prompt injection, hook exfiltration, and MCP surface checks as a local-and-CI gate (ADR-0021)
|
|
332
|
+
- Added `--backend <name>` flag to `forge install` for fetching artifacts from a named backend declared in `forge.config.yaml`; enables installing from private S3 buckets and HTTP endpoints alongside the existing `--from-release` GitHub path
|
|
333
|
+
- Added file-writer module with buildKnowledgeMd, buildHooksYaml, buildMcpServersYaml, and writeWizardResult functions for serializing wizard output to gray-matter markdown and YAML files
|
|
334
|
+
- Added `collections` field to artifact frontmatter and catalog entries so artifacts declare their own collection membership; the catalog derives collection membership from artifact metadata rather than from a separate member list
|
|
335
|
+
- Added governance lane validation warnings: `trust: official` or `partner` without a `license` field, `risk-level: high` without a `trust` lane, and artifacts declaring a collection name with no matching manifest in `collections/`
|
|
336
|
+
- Added CODE_OF_CONDUCT.md addressing contributor responsibility in the AI harness era: curated vs. uncurated AI-assisted contributions, knowledge quality standards, attribution policy, and the expectation that all submitted content has been reviewed and understood by its author
|
|
337
|
+
- Added four seed knowledge artifacts to the Neon Caravan collection: `commit-craft` (prompt), `type-guardian` (skill), `debug-journal` (workflow with three phase files), and `review-ritual` (skill)
|
|
338
|
+
- Added `forge collection build` subcommand and `src/collection-builder.ts` that assembles per-collection dist bundles at `dist/<harness>/collections/<name>/` by merging pre-built member artifact outputs derived from catalog collection membership
|
|
339
|
+
- Added category taxonomy (CategoryEnum) with 9 initial values for tagging knowledge artifacts by domain
|
|
340
|
+
- Added generated `dist/` artifacts for kiro, claude-code, and copilot harnesses covering all power definitions including kiro-official, byron-powers, hello-world, and adr collections
|
|
341
|
+
- Added `karpathy-mode` knowledge entry (Andrej Karpathy's behavioral coding guidelines) with kiro and claude-code harness targets, examples workflow, MIT license, and upstream provenance tracking
|
|
342
|
+
- Added cross-artifact dependency reference validation with warnings for unresolved depends/enhances references
|
|
343
|
+
- Implemented Claude Code adapter with CLAUDE.md, Stop hooks in settings.json, and MCP config
|
|
344
|
+
- Added Collection filter group to `forge catalog browse` UI so users can browse artifacts scoped to a single collection; filter group is hidden when no artifacts have collection membership
|
|
345
|
+
- Added GitHub issue templates for artifact submission (identity table, content preview, quality self-assessment) and content quality report (exact-quote requirement, severity taxonomy, fix capacity check)
|
|
346
|
+
- Implemented eval framework with discovery, prompt resolver, harness context wrapping, promptfoo integration, and scaffold command
|
|
347
|
+
- Added interactive wizard to forge new command using @clack/prompts for guided artifact configuration including frontmatter metadata, knowledge body, hooks, and MCP server definitions with inline Zod validation and cancellation safety
|
|
348
|
+
- Added download cache at `~/.forge/cache/<backend>/<artifact>@<version>/` so remote backend artifacts (GitHub releases, S3, HTTP) are not re-downloaded on repeated installs
|
|
349
|
+
- Added `.forge-manifest.json` written alongside installed artifacts recording artifact name, harness, version, backend label, and install timestamp to enable future upgrade tracking
|
|
350
|
+
- Added enhanced version output with Bun runtime version and OS platform info to `forge --version`
|
|
351
|
+
- Verified CLI entry point with all six commands wired and functional
|
|
352
|
+
- Added root-level CLAUDE.md providing Claude Code with commands, architecture overview, compile pipeline, type system, collection model, MCP bridge details, test helper conventions, and changelog/ADR discipline
|
|
353
|
+
- Added asset-type-aware validation warnings to `forge validate`: `reference-pack` without `inclusion: manual`, `workflow` with empty or missing `workflows/` directory, and `prompt` with a body shorter than 50 characters
|
|
354
|
+
- Added `--type <type>` flag to `forge new` for pre-selecting the asset type and bypassing the wizard type prompt; validates against the 8-value AssetTypeSchema and scaffolds type-appropriate structure (e.g. `workflow` pre-creates `workflows/main.md`)
|
|
355
|
+
- Added typo suggestion for unknown commands using Levenshtein distance (fastest-levenshtein), suggesting the closest match when distance ≤ 2
|
|
356
|
+
- Implemented catalog generation with generateCatalog, serializeCatalog, and catalogCommand
|
|
357
|
+
- Added namespaced artifact layout support for `packages/@org/<artifact>/knowledge.md` alongside the existing flat `knowledge/<artifact>/knowledge.md` layout; dist output paths always use the leaf artifact name
|
|
358
|
+
- Add --backend option to guild init for specifying a named backend
|
|
359
|
+
- Added CLI startup banners: full-color gradient banner with dark navy background for interactive use, and plain-text logBanner() export for log files
|
|
360
|
+
- Added `forge collection new [name]` interactive wizard for scaffolding collection manifests; changed `forge collection` bare invocation to show a status overview with member counts and an interactive "create first collection?" prompt when none exist
|
|
361
|
+
- Added three ADR power hooks (agent-stop reminder, pre-task ADR listing, post-task diff summary) and updated ADR knowledge metadata with `harness-config` and corrected author field
|
|
362
|
+
- Implemented install module with direct CLI install, interactive wizard using clack/prompts, and installCommand handler
|
|
363
|
+
- Added bazaar governance and discovery fields to artifact frontmatter and catalog entries: `maturity`, `trust`, `risk-level`, `audience`, `model-assumptions`, `id`, `license`, `successor`, and `replaces`, all optional with safe defaults so existing artifacts require no changes
|
|
364
|
+
- Documented decision to combine static pattern matching with LLM adversarial rubric evals as a two-layer artifact security review, using the existing promptfoo eval infrastructure against compiled CLAUDE.md artifacts (ADR-0022)
|
|
365
|
+
- Implemented build orchestrator with full and single-harness build, shared MCP server resolution, and CLI handler
|
|
366
|
+
- Added `harness-config` field (with `kiro.format: "power"`) to `importKiroPower` frontmatter output so imported powers carry their format declaration forward
|
|
367
|
+
- Implemented parser module with parseKnowledgeMd, parseHooksYaml, parseMcpServersYaml, parseWorkflows, and loadKnowledgeArtifact
|
|
368
|
+
- Implemented validation module with validateArtifact, validateAll, and validateCommand CLI handler
|
|
369
|
+
- Verified and completed Zod schemas in src/schemas.ts with all required schemas, types, and passthrough support
|
|
370
|
+
- Added biome.json config scoping lint to src/, scripts/, evals/, and collections/, excluding generated files (bridge/, coverage/, dist/, .forge/, upstream/, catalog.json)
|
|
371
|
+
- Implemented Copilot adapter with instructions, path-scoped files, and AGENTS.md generation
|
|
372
|
+
- Added dependency composition for `workflow` and `agent` artifact types: MCP servers from `depends` artifacts are merged before compilation, and hooks are merged when `inherit-hooks: true` is set in the artifact's frontmatter
|
|
373
|
+
- Added `kiro-official.yaml` collection manifest, `sync-kiro-powers.sh` script for pulling upstream power sources, and `upstream/.gitkeep` placeholder directory
|
|
374
|
+
- Added dependency cycle detection to `forge validate` using DFS over the `depends` graph; cycles now produce hard validation errors identifying the full cycle path
|
|
375
|
+
|
|
376
|
+
### Changed
|
|
377
|
+
- Changed detail view to merge redundant Harnesses and Formats sections into a single Targets section showing icon, harness name, and format inline; improved back-to-catalog button with pill styling and animated arrow
|
|
378
|
+
- Changed writing-related power knowledge (novelist, technical-author, proofreader-review-checklist, book-agent-publicist, scifi-novelist, fantasy-novelist, mystery-series-novelist, series-continuity) to live under `knowledge/byron-powers/` namespace with new hooks and workflow content
|
|
379
|
+
- Expanded SECURITY.md with MCP bridge attack surface documentation, distinction between security issues and content quality issues, coordinated disclosure timeline, and in-scope vs. out-of-scope table
|
|
380
|
+
- Updated forge new scaffold template to include categories, ecosystem, depends, and enhances fields with guiding YAML comments
|
|
381
|
+
- Changed eval output formatting to use horizontal rules, filled progress bars, tree connectors (├─/╰─) for response and grading reason detail lines, and suppressed noisy GCP metadata probe warnings from promptfoo
|
|
382
|
+
- Changed root help screen to display subcommands indented under their parent commands (catalog, collection) in a structured hierarchy; stripped `[options]` noise from command names at the overview level
|
|
383
|
+
- Expanded pull request template with artifact changes table, breaking changes callout, split checklist (Code / Artifacts / Housekeeping), harness output preview command, and structured prompting to prevent empty sections
|
|
384
|
+
- Changed `maturity: deprecated` without a `successor` field from a validation warning to a validation error, enforcing that deprecated artifacts always point to their replacement
|
|
385
|
+
- Changed banner display logic to suppress on --help, -h, and `forge help` invocations, showing only on bare `forge` with no arguments
|
|
386
|
+
- Changed the type-field deprecation warning to a lifecycle warning emitted during `forge validate` when an artifact has `maturity: deprecated` but no `successor` field set
|
|
387
|
+
- Changed `forge new` scaffold template to include commented-out bazaar metadata stubs (maturity, trust, license, audience, risk-level, model-assumptions) so authors can see available fields without being required to fill them in
|
|
388
|
+
- Changed catalog browser to registry-style card hierarchy with display name, monospace package name, 2-line description, pill keywords, and icon-only harness footer; added Space Grotesk display font and Inter body font; improved filter bar with labeled groups and pill-style checkboxes
|
|
389
|
+
|
|
390
|
+
### Deprecated
|
|
391
|
+
- Deprecated `BuildOptions.knowledgeDir` (singular string) in favor of `BuildOptions.knowledgeDirs: string[]` to support multi-root scanning; the old field is still accepted but will be removed in a future version
|
|
392
|
+
|
|
393
|
+
### Fixed
|
|
394
|
+
- Fixed trailing `help` on CLI commands (e.g. `forge build help`, `forge catalog browse help`) now showing the help screen instead of erroring with "too many arguments"
|
|
395
|
+
- Fixed type errors across source and test files for strict TypeScript compliance — added missing collections/inherit-hooks fields, corrected Dirent typing for Node.js compatibility, and resolved narrowing issues in tests
|
|
396
|
+
- Fixed wizard validateField returning parsed string values as error messages, causing text prompts to mirror input instead of proceeding
|
|
397
|
+
- GitHubBackend fetchArtifact tarball extraction double-nesting (harness prefix already in archive)
|
|
398
|
+
- Fixed `forge import` crashing on non-artifact directories by verifying `POWER.md` / `SKILL.md` existence before dispatching, and filtering out dot-directories (`.github`, `.kiro`, etc.) during source scanning
|
|
399
|
+
- Fixed `forge tutorial` crashing on re-run when the hello-world artifact already exists by removing the existing directory before re-scaffolding when the user confirms overwrite
|
|
400
|
+
- GitHubBackend fetchArtifact directory existence check (Bun.file().exists() does not work on directories)
|
|
401
|
+
- Fixed CLI banner right edge so all lines render as a uniform rectangle by computing visual terminal column width (handling wide emoji including ⚡) and normalising trailing padding dynamically rather than hardcoding it per line
|
|
402
|
+
- Global install version selection now picks newest release instead of oldest
|
|
403
|
+
- GitHubBackend fetchCatalog now uses gh release download instead of broken gh api path
|
|
404
|
+
- Fixed build.ts resolveComposition destructuring that referenced a nonexistent `resolved` property, causing a type error and potential runtime failure
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
### Architecture Decisions
|
|
408
|
+
|
|
409
|
+
- [ADR-009](docs/adr/0009-clack-prompts-for-interactive-cli.md): Use @clack/prompts for interactive CLI flows
|
|
410
|
+
- [ADR-010](docs/adr/0010-scaffold-first-overwrite-on-success.md): Scaffold-first, overwrite-on-success pattern for interactive wizard
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Johns Hopkins Sheridan Libraries
|
|
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.
|