@warpgogol/forge 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +149 -0
- package/README.md +164 -0
- package/bin/cli.js +16 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +265 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/os/adr/adr.module.d.ts +3 -0
- package/dist/os/adr/adr.module.d.ts.map +1 -0
- package/dist/os/adr/adr.module.js +112 -0
- package/dist/os/adr/adr.module.js.map +1 -0
- package/dist/os/adr/frontmatter-io.d.ts +11 -0
- package/dist/os/adr/frontmatter-io.d.ts.map +1 -0
- package/dist/os/adr/frontmatter-io.js +64 -0
- package/dist/os/adr/frontmatter-io.js.map +1 -0
- package/dist/os/adr/handlers/archive.d.ts +24 -0
- package/dist/os/adr/handlers/archive.d.ts.map +1 -0
- package/dist/os/adr/handlers/archive.js +162 -0
- package/dist/os/adr/handlers/archive.js.map +1 -0
- package/dist/os/adr/handlers/list-create.d.ts +5 -0
- package/dist/os/adr/handlers/list-create.d.ts.map +1 -0
- package/dist/os/adr/handlers/list-create.js +165 -0
- package/dist/os/adr/handlers/list-create.js.map +1 -0
- package/dist/os/adr/handlers/validate.d.ts +4 -0
- package/dist/os/adr/handlers/validate.d.ts.map +1 -0
- package/dist/os/adr/handlers/validate.js +219 -0
- package/dist/os/adr/handlers/validate.js.map +1 -0
- package/dist/os/adr/index.d.ts +8 -0
- package/dist/os/adr/index.d.ts.map +1 -0
- package/dist/os/adr/index.js +18 -0
- package/dist/os/adr/index.js.map +1 -0
- package/dist/os/adr/types.d.ts +59 -0
- package/dist/os/adr/types.d.ts.map +1 -0
- package/dist/os/adr/types.js +54 -0
- package/dist/os/adr/types.js.map +1 -0
- package/dist/os/audit/audit.module.d.ts +3 -0
- package/dist/os/audit/audit.module.d.ts.map +1 -0
- package/dist/os/audit/audit.module.js +44 -0
- package/dist/os/audit/audit.module.js.map +1 -0
- package/dist/os/audit/frontmatter-io.d.ts +12 -0
- package/dist/os/audit/frontmatter-io.d.ts.map +1 -0
- package/dist/os/audit/frontmatter-io.js +73 -0
- package/dist/os/audit/frontmatter-io.js.map +1 -0
- package/dist/os/audit/handlers/archive.d.ts +4 -0
- package/dist/os/audit/handlers/archive.d.ts.map +1 -0
- package/dist/os/audit/handlers/archive.js +167 -0
- package/dist/os/audit/handlers/archive.js.map +1 -0
- package/dist/os/audit/index.d.ts +6 -0
- package/dist/os/audit/index.d.ts.map +1 -0
- package/dist/os/audit/index.js +16 -0
- package/dist/os/audit/index.js.map +1 -0
- package/dist/os/audit/types.d.ts +12 -0
- package/dist/os/audit/types.d.ts.map +1 -0
- package/dist/os/audit/types.js +17 -0
- package/dist/os/audit/types.js.map +1 -0
- package/dist/os/compass/compass.module.d.ts +3 -0
- package/dist/os/compass/compass.module.d.ts.map +1 -0
- package/dist/os/compass/compass.module.js +162 -0
- package/dist/os/compass/compass.module.js.map +1 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts +36 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-audit-handler.js +238 -0
- package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +19 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.js +205 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts +28 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-inventory-handler.js +213 -0
- package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-inventory.d.ts +30 -0
- package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-inventory.js +418 -0
- package/dist/os/compass/handlers/compass-inventory.js.map +1 -0
- package/dist/os/compass/handlers/git-revision.d.ts +8 -0
- package/dist/os/compass/handlers/git-revision.d.ts.map +1 -0
- package/dist/os/compass/handlers/git-revision.js +99 -0
- package/dist/os/compass/handlers/git-revision.js.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts +3 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.js +41 -0
- package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -0
- package/dist/os/compass/index.d.ts +8 -0
- package/dist/os/compass/index.d.ts.map +1 -0
- package/dist/os/compass/index.js +19 -0
- package/dist/os/compass/index.js.map +1 -0
- package/dist/os/core/core.module.d.ts +3 -0
- package/dist/os/core/core.module.d.ts.map +1 -0
- package/dist/os/core/core.module.js +318 -0
- package/dist/os/core/core.module.js.map +1 -0
- package/dist/os/core/index.d.ts +2 -0
- package/dist/os/core/index.d.ts.map +1 -0
- package/dist/os/core/index.js +13 -0
- package/dist/os/core/index.js.map +1 -0
- package/dist/os/mission/handlers/archive.d.ts +4 -0
- package/dist/os/mission/handlers/archive.d.ts.map +1 -0
- package/dist/os/mission/handlers/archive.js +209 -0
- package/dist/os/mission/handlers/archive.js.map +1 -0
- package/dist/os/mission/index.d.ts +2 -0
- package/dist/os/mission/index.d.ts.map +1 -0
- package/dist/os/mission/index.js +2 -0
- package/dist/os/mission/index.js.map +1 -0
- package/dist/os/mission/mission.module.d.ts +3 -0
- package/dist/os/mission/mission.module.d.ts.map +1 -0
- package/dist/os/mission/mission.module.js +44 -0
- package/dist/os/mission/mission.module.js.map +1 -0
- package/dist/os/mission/types.d.ts +23 -0
- package/dist/os/mission/types.d.ts.map +1 -0
- package/dist/os/mission/types.js +18 -0
- package/dist/os/mission/types.js.map +1 -0
- package/dist/os/naming/index.d.ts +3 -0
- package/dist/os/naming/index.d.ts.map +1 -0
- package/dist/os/naming/index.js +14 -0
- package/dist/os/naming/index.js.map +1 -0
- package/dist/os/naming/naming-convention.d.ts +25 -0
- package/dist/os/naming/naming-convention.d.ts.map +1 -0
- package/dist/os/naming/naming-convention.js +324 -0
- package/dist/os/naming/naming-convention.js.map +1 -0
- package/dist/os/naming/naming.module.d.ts +3 -0
- package/dist/os/naming/naming.module.d.ts.map +1 -0
- package/dist/os/naming/naming.module.js +33 -0
- package/dist/os/naming/naming.module.js.map +1 -0
- package/dist/os/plan/frontmatter-io.d.ts +12 -0
- package/dist/os/plan/frontmatter-io.d.ts.map +1 -0
- package/dist/os/plan/frontmatter-io.js +71 -0
- package/dist/os/plan/frontmatter-io.js.map +1 -0
- package/dist/os/plan/handlers/archive.d.ts +4 -0
- package/dist/os/plan/handlers/archive.d.ts.map +1 -0
- package/dist/os/plan/handlers/archive.js +166 -0
- package/dist/os/plan/handlers/archive.js.map +1 -0
- package/dist/os/plan/index.d.ts +6 -0
- package/dist/os/plan/index.d.ts.map +1 -0
- package/dist/os/plan/index.js +16 -0
- package/dist/os/plan/index.js.map +1 -0
- package/dist/os/plan/plan.module.d.ts +3 -0
- package/dist/os/plan/plan.module.d.ts.map +1 -0
- package/dist/os/plan/plan.module.js +44 -0
- package/dist/os/plan/plan.module.js.map +1 -0
- package/dist/os/plan/types.d.ts +12 -0
- package/dist/os/plan/types.d.ts.map +1 -0
- package/dist/os/plan/types.js +17 -0
- package/dist/os/plan/types.js.map +1 -0
- package/dist/os/rfc/acceptance.d.ts +15 -0
- package/dist/os/rfc/acceptance.d.ts.map +1 -0
- package/dist/os/rfc/acceptance.js +290 -0
- package/dist/os/rfc/acceptance.js.map +1 -0
- package/dist/os/rfc/decision-log.d.ts +6 -0
- package/dist/os/rfc/decision-log.d.ts.map +1 -0
- package/dist/os/rfc/decision-log.js +269 -0
- package/dist/os/rfc/decision-log.js.map +1 -0
- package/dist/os/rfc/dna-trace.d.ts +27 -0
- package/dist/os/rfc/dna-trace.d.ts.map +1 -0
- package/dist/os/rfc/dna-trace.js +214 -0
- package/dist/os/rfc/dna-trace.js.map +1 -0
- package/dist/os/rfc/frontmatter-io.d.ts +14 -0
- package/dist/os/rfc/frontmatter-io.d.ts.map +1 -0
- package/dist/os/rfc/frontmatter-io.js +98 -0
- package/dist/os/rfc/frontmatter-io.js.map +1 -0
- package/dist/os/rfc/handlers/archive.d.ts +24 -0
- package/dist/os/rfc/handlers/archive.d.ts.map +1 -0
- package/dist/os/rfc/handlers/archive.js +161 -0
- package/dist/os/rfc/handlers/archive.js.map +1 -0
- package/dist/os/rfc/handlers/check.d.ts +4 -0
- package/dist/os/rfc/handlers/check.d.ts.map +1 -0
- package/dist/os/rfc/handlers/check.js +195 -0
- package/dist/os/rfc/handlers/check.js.map +1 -0
- package/dist/os/rfc/handlers/implement-stamp.d.ts +4 -0
- package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -0
- package/dist/os/rfc/handlers/implement-stamp.js +334 -0
- package/dist/os/rfc/handlers/implement-stamp.js.map +1 -0
- package/dist/os/rfc/handlers/index-graph.d.ts +13 -0
- package/dist/os/rfc/handlers/index-graph.d.ts.map +1 -0
- package/dist/os/rfc/handlers/index-graph.js +189 -0
- package/dist/os/rfc/handlers/index-graph.js.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts +13 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.js +150 -0
- package/dist/os/rfc/handlers/lifecycle.js.map +1 -0
- package/dist/os/rfc/handlers/list-create.d.ts +6 -0
- package/dist/os/rfc/handlers/list-create.d.ts.map +1 -0
- package/dist/os/rfc/handlers/list-create.js +235 -0
- package/dist/os/rfc/handlers/list-create.js.map +1 -0
- package/dist/os/rfc/handlers/pipeline-status.d.ts +26 -0
- package/dist/os/rfc/handlers/pipeline-status.d.ts.map +1 -0
- package/dist/os/rfc/handlers/pipeline-status.js +124 -0
- package/dist/os/rfc/handlers/pipeline-status.js.map +1 -0
- package/dist/os/rfc/handlers/shared.d.ts +22 -0
- package/dist/os/rfc/handlers/shared.d.ts.map +1 -0
- package/dist/os/rfc/handlers/shared.js +99 -0
- package/dist/os/rfc/handlers/shared.js.map +1 -0
- package/dist/os/rfc/handlers/supersede-propose.d.ts +4 -0
- package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -0
- package/dist/os/rfc/handlers/supersede-propose.js +200 -0
- package/dist/os/rfc/handlers/supersede-propose.js.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts +29 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.js +461 -0
- package/dist/os/rfc/handlers/validate-rules.js.map +1 -0
- package/dist/os/rfc/handlers/validate.d.ts +4 -0
- package/dist/os/rfc/handlers/validate.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate.js +101 -0
- package/dist/os/rfc/handlers/validate.js.map +1 -0
- package/dist/os/rfc/handlers.d.ts +7 -0
- package/dist/os/rfc/handlers.d.ts.map +1 -0
- package/dist/os/rfc/handlers.js +19 -0
- package/dist/os/rfc/handlers.js.map +1 -0
- package/dist/os/rfc/index.d.ts +18 -0
- package/dist/os/rfc/index.d.ts.map +1 -0
- package/dist/os/rfc/index.js +24 -0
- package/dist/os/rfc/index.js.map +1 -0
- package/dist/os/rfc/rfc.module.d.ts +3 -0
- package/dist/os/rfc/rfc.module.d.ts.map +1 -0
- package/dist/os/rfc/rfc.module.js +355 -0
- package/dist/os/rfc/rfc.module.js.map +1 -0
- package/dist/os/rfc/types.d.ts +448 -0
- package/dist/os/rfc/types.d.ts.map +1 -0
- package/dist/os/rfc/types.js +95 -0
- package/dist/os/rfc/types.js.map +1 -0
- package/dist/os/rfc/verification-evidence.d.ts +8 -0
- package/dist/os/rfc/verification-evidence.d.ts.map +1 -0
- package/dist/os/rfc/verification-evidence.js +182 -0
- package/dist/os/rfc/verification-evidence.js.map +1 -0
- package/dist/os/session/atif-parser.d.ts +29 -0
- package/dist/os/session/atif-parser.d.ts.map +1 -0
- package/dist/os/session/atif-parser.js +138 -0
- package/dist/os/session/atif-parser.js.map +1 -0
- package/dist/os/session/frontmatter-io.d.ts +31 -0
- package/dist/os/session/frontmatter-io.d.ts.map +1 -0
- package/dist/os/session/frontmatter-io.js +146 -0
- package/dist/os/session/frontmatter-io.js.map +1 -0
- package/dist/os/session/handlers/archive.d.ts +4 -0
- package/dist/os/session/handlers/archive.d.ts.map +1 -0
- package/dist/os/session/handlers/archive.js +209 -0
- package/dist/os/session/handlers/archive.js.map +1 -0
- package/dist/os/session/handlers/list.d.ts +4 -0
- package/dist/os/session/handlers/list.d.ts.map +1 -0
- package/dist/os/session/handlers/list.js +147 -0
- package/dist/os/session/handlers/list.js.map +1 -0
- package/dist/os/session/handlers/save.d.ts +6 -0
- package/dist/os/session/handlers/save.d.ts.map +1 -0
- package/dist/os/session/handlers/save.js +285 -0
- package/dist/os/session/handlers/save.js.map +1 -0
- package/dist/os/session/handlers/validate.d.ts +4 -0
- package/dist/os/session/handlers/validate.d.ts.map +1 -0
- package/dist/os/session/handlers/validate.js +188 -0
- package/dist/os/session/handlers/validate.js.map +1 -0
- package/dist/os/session/index.d.ts +9 -0
- package/dist/os/session/index.d.ts.map +1 -0
- package/dist/os/session/index.js +20 -0
- package/dist/os/session/index.js.map +1 -0
- package/dist/os/session/session.module.d.ts +3 -0
- package/dist/os/session/session.module.d.ts.map +1 -0
- package/dist/os/session/session.module.js +113 -0
- package/dist/os/session/session.module.js.map +1 -0
- package/dist/os/session/types.d.ts +101 -0
- package/dist/os/session/types.d.ts.map +1 -0
- package/dist/os/session/types.js +52 -0
- package/dist/os/session/types.js.map +1 -0
- package/dist/os/spec/spec-materialize.d.ts +21 -0
- package/dist/os/spec/spec-materialize.d.ts.map +1 -0
- package/dist/os/spec/spec-materialize.js +342 -0
- package/dist/os/spec/spec-materialize.js.map +1 -0
- package/dist/os/spec/spec-schema.d.ts +132 -0
- package/dist/os/spec/spec-schema.d.ts.map +1 -0
- package/dist/os/spec/spec-schema.js +118 -0
- package/dist/os/spec/spec-schema.js.map +1 -0
- package/dist/os/spec/spec-status.d.ts +33 -0
- package/dist/os/spec/spec-status.d.ts.map +1 -0
- package/dist/os/spec/spec-status.js +222 -0
- package/dist/os/spec/spec-status.js.map +1 -0
- package/dist/os/spec/spec-validate.d.ts +4 -0
- package/dist/os/spec/spec-validate.d.ts.map +1 -0
- package/dist/os/spec/spec-validate.js +435 -0
- package/dist/os/spec/spec-validate.js.map +1 -0
- package/dist/os/spec/spec.module.d.ts +3 -0
- package/dist/os/spec/spec.module.d.ts.map +1 -0
- package/dist/os/spec/spec.module.js +67 -0
- package/dist/os/spec/spec.module.js.map +1 -0
- package/dist/os/werkstatt/handlers/lock.d.ts +10 -0
- package/dist/os/werkstatt/handlers/lock.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/lock.js +127 -0
- package/dist/os/werkstatt/handlers/lock.js.map +1 -0
- package/dist/os/werkstatt/handlers/schema.d.ts +32 -0
- package/dist/os/werkstatt/handlers/schema.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/schema.js +41 -0
- package/dist/os/werkstatt/handlers/schema.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +15 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +142 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +18 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +43 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +11 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +79 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -0
- package/dist/os/werkstatt/index.d.ts +7 -0
- package/dist/os/werkstatt/index.d.ts.map +1 -0
- package/dist/os/werkstatt/index.js +18 -0
- package/dist/os/werkstatt/index.js.map +1 -0
- package/dist/os/werkstatt/werkstatt.module.d.ts +3 -0
- package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -0
- package/dist/os/werkstatt/werkstatt.module.js +58 -0
- package/dist/os/werkstatt/werkstatt.module.js.map +1 -0
- package/dist/os/workflow/handlers.d.ts +12 -0
- package/dist/os/workflow/handlers.d.ts.map +1 -0
- package/dist/os/workflow/handlers.js +254 -0
- package/dist/os/workflow/handlers.js.map +1 -0
- package/dist/os/workflow/index.d.ts +4 -0
- package/dist/os/workflow/index.d.ts.map +1 -0
- package/dist/os/workflow/index.js +18 -0
- package/dist/os/workflow/index.js.map +1 -0
- package/dist/os/workflow/types.d.ts +69 -0
- package/dist/os/workflow/types.d.ts.map +1 -0
- package/dist/os/workflow/types.js +23 -0
- package/dist/os/workflow/types.js.map +1 -0
- package/dist/os/workflow/workflow.module.d.ts +3 -0
- package/dist/os/workflow/workflow.module.d.ts.map +1 -0
- package/dist/os/workflow/workflow.module.js +48 -0
- package/dist/os/workflow/workflow.module.js.map +1 -0
- package/dist/src/cli-output.d.ts +5 -0
- package/dist/src/cli-output.d.ts.map +1 -0
- package/dist/src/cli-output.js +52 -0
- package/dist/src/cli-output.js.map +1 -0
- package/dist/src/config/forge-config.d.ts +170 -0
- package/dist/src/config/forge-config.d.ts.map +1 -0
- package/dist/src/config/forge-config.js +259 -0
- package/dist/src/config/forge-config.js.map +1 -0
- package/dist/src/forge-module.d.ts +16 -0
- package/dist/src/forge-module.d.ts.map +1 -0
- package/dist/src/forge-module.js +15 -0
- package/dist/src/forge-module.js.map +1 -0
- package/dist/src/index.d.ts +30 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +48 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/migration-adapters/git-utils.d.ts +3 -0
- package/dist/src/migration-adapters/git-utils.d.ts.map +1 -0
- package/dist/src/migration-adapters/git-utils.js +46 -0
- package/dist/src/migration-adapters/git-utils.js.map +1 -0
- package/dist/src/migration-adapters/ignored-files.d.ts +12 -0
- package/dist/src/migration-adapters/ignored-files.d.ts.map +1 -0
- package/dist/src/migration-adapters/ignored-files.js +190 -0
- package/dist/src/migration-adapters/ignored-files.js.map +1 -0
- package/dist/src/migration-adapters/index.d.ts +8 -0
- package/dist/src/migration-adapters/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/index.js +17 -0
- package/dist/src/migration-adapters/index.js.map +1 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +3 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js +141 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +3 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.js +142 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -0
- package/dist/src/migration-adapters/registry.d.ts +6 -0
- package/dist/src/migration-adapters/registry.d.ts.map +1 -0
- package/dist/src/migration-adapters/registry.js +58 -0
- package/dist/src/migration-adapters/registry.js.map +1 -0
- package/dist/src/migration-adapters/types.d.ts +35 -0
- package/dist/src/migration-adapters/types.d.ts.map +1 -0
- package/dist/src/migration-adapters/types.js +31 -0
- package/dist/src/migration-adapters/types.js.map +1 -0
- package/dist/src/onboarding/agents-generate.d.ts +11 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -0
- package/dist/src/onboarding/agents-generate.js +415 -0
- package/dist/src/onboarding/agents-generate.js.map +1 -0
- package/dist/src/onboarding/create.d.ts +12 -0
- package/dist/src/onboarding/create.d.ts.map +1 -0
- package/dist/src/onboarding/create.js +232 -0
- package/dist/src/onboarding/create.js.map +1 -0
- package/dist/src/onboarding/doctor.d.ts +30 -0
- package/dist/src/onboarding/doctor.d.ts.map +1 -0
- package/dist/src/onboarding/doctor.js +380 -0
- package/dist/src/onboarding/doctor.js.map +1 -0
- package/dist/src/onboarding/extended-behavioral-layer.d.ts +10 -0
- package/dist/src/onboarding/extended-behavioral-layer.d.ts.map +1 -0
- package/dist/src/onboarding/extended-behavioral-layer.js +82 -0
- package/dist/src/onboarding/extended-behavioral-layer.js.map +1 -0
- package/dist/src/onboarding/init.d.ts +25 -0
- package/dist/src/onboarding/init.d.ts.map +1 -0
- package/dist/src/onboarding/init.js +260 -0
- package/dist/src/onboarding/init.js.map +1 -0
- package/dist/src/onboarding/scaffold-project.d.ts +12 -0
- package/dist/src/onboarding/scaffold-project.d.ts.map +1 -0
- package/dist/src/onboarding/scaffold-project.js +167 -0
- package/dist/src/onboarding/scaffold-project.js.map +1 -0
- package/dist/src/onboarding/scaffold.d.ts +15 -0
- package/dist/src/onboarding/scaffold.d.ts.map +1 -0
- package/dist/src/onboarding/scaffold.js +120 -0
- package/dist/src/onboarding/scaffold.js.map +1 -0
- package/dist/src/onboarding/upgrade.d.ts +17 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -0
- package/dist/src/onboarding/upgrade.js +293 -0
- package/dist/src/onboarding/upgrade.js.map +1 -0
- package/dist/src/profiles/stack-profile.d.ts +51 -0
- package/dist/src/profiles/stack-profile.d.ts.map +1 -0
- package/dist/src/profiles/stack-profile.js +119 -0
- package/dist/src/profiles/stack-profile.js.map +1 -0
- package/dist/src/registry.d.ts +38 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +135 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/skill-schema.d.ts +30 -0
- package/dist/src/skill-schema.d.ts.map +1 -0
- package/dist/src/skill-schema.js +34 -0
- package/dist/src/skill-schema.js.map +1 -0
- package/dist/src/types.d.ts +153 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +17 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/fs-atomic.d.ts +7 -0
- package/dist/src/utils/fs-atomic.d.ts.map +1 -0
- package/dist/src/utils/fs-atomic.js +81 -0
- package/dist/src/utils/fs-atomic.js.map +1 -0
- package/dist/src/utils/fs-idempotent.d.ts +2 -0
- package/dist/src/utils/fs-idempotent.d.ts.map +1 -0
- package/dist/src/utils/fs-idempotent.js +30 -0
- package/dist/src/utils/fs-idempotent.js.map +1 -0
- package/dist/src/utils/fs.d.ts +8 -0
- package/dist/src/utils/fs.d.ts.map +1 -0
- package/dist/src/utils/fs.js +60 -0
- package/dist/src/utils/fs.js.map +1 -0
- package/dist/src/utils/generated-marker.d.ts +21 -0
- package/dist/src/utils/generated-marker.d.ts.map +1 -0
- package/dist/src/utils/generated-marker.js +128 -0
- package/dist/src/utils/generated-marker.js.map +1 -0
- package/dist/src/utils/hash.d.ts +2 -0
- package/dist/src/utils/hash.d.ts.map +1 -0
- package/dist/src/utils/hash.js +18 -0
- package/dist/src/utils/hash.js.map +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/string-utils.d.ts +2 -0
- package/dist/src/utils/string-utils.d.ts.map +1 -0
- package/dist/src/utils/string-utils.js +19 -0
- package/dist/src/utils/string-utils.js.map +1 -0
- package/dist/src/validators/port-validate.d.ts +12 -0
- package/dist/src/validators/port-validate.d.ts.map +1 -0
- package/dist/src/validators/port-validate.js +73 -0
- package/dist/src/validators/port-validate.js.map +1 -0
- package/dist/src/validators/skill-validate.d.ts +14 -0
- package/dist/src/validators/skill-validate.d.ts.map +1 -0
- package/dist/src/validators/skill-validate.js +487 -0
- package/dist/src/validators/skill-validate.js.map +1 -0
- package/os/rfc/rfc-0000-template.md +222 -0
- package/package.json +262 -0
- package/profiles/astro-typescript-turborepo.yaml +144 -0
- package/profiles/forge-shell.yaml +77 -0
- package/profiles/phaser-turborepo.yaml +144 -0
- package/skills/_shared/fo-pipeline-conventions.md +119 -0
- package/skills/_shared/fo-session-summary.md +95 -0
- package/skills/fo/fo-add-tests/SKILL.md +166 -0
- package/skills/fo/fo-add-tests/mocking.md +60 -0
- package/skills/fo/fo-add-tests/pbt-guide.md +193 -0
- package/skills/fo/fo-add-tests/tests-reference.md +92 -0
- package/skills/fo/fo-architecture/SKILL.md +83 -0
- package/skills/fo/fo-architecture/architecture-vocabulary.md +104 -0
- package/skills/fo/fo-architecture/deepening.md +37 -0
- package/skills/fo/fo-architecture/design-it-twice.md +44 -0
- package/skills/fo/fo-architecture/html-report.md +104 -0
- package/skills/fo/fo-compass-annotate/SKILL.md +128 -0
- package/skills/fo/fo-compass-annotate/reference/comment-styles.md +25 -0
- package/skills/fo/fo-compass-annotate/reference/learned-principles.md +12 -0
- package/skills/fo/fo-compass-annotate/reference/risk-patterns.md +23 -0
- package/skills/fo/fo-compass-annotate/templates/audit-prompt.md +36 -0
- package/skills/fo/fo-compass-annotate/templates/header-format.md +57 -0
- package/skills/fo/fo-compass-annotate/templates/header-prompt.md +35 -0
- package/skills/fo/fo-doc-audit/SKILL.md +264 -0
- package/skills/fo/fo-extract-dna/SKILL.md +248 -0
- package/skills/fo/fo-fix/SKILL.md +152 -0
- package/skills/fo/fo-fix/bug-diagnosis.md +128 -0
- package/skills/fo/fo-handoff/SKILL.md +58 -0
- package/skills/fo/fo-harvest/SKILL.md +80 -0
- package/skills/fo/fo-idea/SKILL.md +242 -0
- package/skills/fo/fo-idea-audit/SKILL.md +248 -0
- package/skills/fo/fo-idea-create-adr/SKILL.md +130 -0
- package/skills/fo/fo-idea-create-rfc/SKILL.md +130 -0
- package/skills/fo/fo-idea-enhance/SKILL.md +218 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +36 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +167 -0
- package/skills/fo/fo-idea-implement/SKILL.md +463 -0
- package/skills/fo/fo-idea-plan/SKILL.md +230 -0
- package/skills/fo/fo-idea-status/SKILL.md +103 -0
- package/skills/fo/fo-memory-sync/SKILL.md +204 -0
- package/skills/fo/fo-memory-sync/fix-patterns.md +24 -0
- package/skills/fo/fo-memory-sync/learned-principles.md +6 -0
- package/skills/fo/fo-memory-sync/qa-log.md +5 -0
- package/skills/fo/fo-qa/SKILL.md +142 -0
- package/skills/fo/fo-review/SKILL.md +273 -0
- package/skills/fo/fo-session-retro/SKILL.md +276 -0
- package/skills/fo/fo-session-save/SKILL.md +71 -0
- package/skills/fo/fo-session-save/fix-patterns.md +33 -0
- package/skills/fo/fo-session-save/learned-principles.md +19 -0
- package/skills/fo/fo-session-save/qa-log.md +11 -0
- package/skills/fo/fo-spec-ingest/SKILL.md +127 -0
- package/skills/fo/fo-triage/SKILL.md +97 -0
- package/skills/meta/forge-bootstrap/SKILL.md +335 -0
- package/skills/meta/forge-bootstrap/forge-about.md +35 -0
- package/skills/meta/forge-bootstrap/milestone-gallery/.gitkeep +0 -0
- package/skills/meta/forge-bootstrap/operator-profile-template.md +53 -0
- package/skills/meta/forge-bootstrap/project-narrative-template.md +31 -0
- package/skills/meta/port-to-forge/SKILL.md +65 -0
- package/skills/meta/skill-create/SKILL.md +73 -0
- package/skills/shared/grilling/SKILL.md +28 -0
- package/skills/shared/grilling/learned-principles.md +12 -0
- package/skills/shared/grilling/qa-log.md +10 -0
- package/skills/shared/my-preferences/SKILL.md +77 -0
- package/skills/shared/windows-ai-tooling/SKILL.md +200 -0
- package/skills/shared/writing-great-skills/SKILL.md +132 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fo-session-retro
|
|
3
|
+
description: Session-end insight triage — review what was discovered, categorize each insight, and route it to the right durable home (AGENTS.md rule, ADR, DNA invariant, forge pattern, or memory).
|
|
4
|
+
invocation: user
|
|
5
|
+
category: fo
|
|
6
|
+
concerns: document-only
|
|
7
|
+
dependsOn: ['my-preferences']
|
|
8
|
+
languagePolicy: ref(PREFERENCES.md)
|
|
9
|
+
bindings:
|
|
10
|
+
requires: []
|
|
11
|
+
optional: [paths.invariantsFile]
|
|
12
|
+
triggers: ["session retrospective", "capture insights from this session", "triage session discoveries"]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Session Retro
|
|
16
|
+
|
|
17
|
+
Before starting, read `PREFERENCES.md` at the repository root. If the file is missing or `aiLanguage` is unset, ask the operator once and create the file using the `my-preferences` skill semantics.
|
|
18
|
+
|
|
19
|
+
Review the current session for discoveries that other agents would benefit from knowing. Categorize each insight and route it to the appropriate durable home. This skill is the **knowledge capture entry point** — it does not duplicate the work of `fo-extract-dna`, `fo-harvest`, or `fo-idea-create-adr`; it triages and delegates.
|
|
20
|
+
|
|
21
|
+
## When to invoke
|
|
22
|
+
|
|
23
|
+
- **At session end** — after completing work, before closing the conversation. The operator runs `/fo-session-retro` to check if any insights emerged that deserve to outlive the session.
|
|
24
|
+
- **After a debugging session** — when root-cause analysis revealed non-obvious behavior that others would rediscover.
|
|
25
|
+
- **After exploring a new area** — when conventions or patterns were learned that are not yet documented.
|
|
26
|
+
- **Inline by other skills** — `fo-doc-audit` or session-end workflows may delegate here for the "what did you learn?" step.
|
|
27
|
+
|
|
28
|
+
## What this skill is NOT
|
|
29
|
+
|
|
30
|
+
- It is not `fo-doc-audit` — that skill checks whether existing docs are in sync with code changes. This skill captures **new knowledge** that does not yet exist in any doc.
|
|
31
|
+
- It is not `fo-harvest` — that skill scans for portable code patterns. This skill handles all insight types, including non-code knowledge.
|
|
32
|
+
- It is not `fo-extract-dna` — that skill formalizes architectural invariants through RFCs. This skill may **delegate** to it when an insight is DNA-grade.
|
|
33
|
+
- It is not a memory dump — memory DB is one of five routing targets, not the default. Most insights belong in version-controlled files, not ephemeral memory.
|
|
34
|
+
|
|
35
|
+
## Insight categories and routing
|
|
36
|
+
|
|
37
|
+
Each discovered insight is categorized into exactly one of six types. The category determines where the knowledge lives and how it reaches other agents.
|
|
38
|
+
|
|
39
|
+
| Category | What it is | Destination | Mechanism |
|
|
40
|
+
| --- | --- | --- | --- |
|
|
41
|
+
| **Rule** | A convention or behavioral expectation that agents must follow | Nearest applicable `AGENTS.md` | Direct edit by this skill |
|
|
42
|
+
| **Decision** | An architectural choice with rationale that should be preserved | `docs/adrs/` | Delegate to `fo-idea-create-adr` |
|
|
43
|
+
| **Invariant** | A cross-workspace architectural rule that warrants DNA status | `ref(forge.yaml bindings.paths.invariantsFile)` | Delegate to `fo-extract-dna` |
|
|
44
|
+
| **Pattern** | A reusable code pattern or abstraction worth porting to forge | `packages/forge/` | Delegate to `fo-harvest` |
|
|
45
|
+
| **Operator** | A preference, communication style, or behavioral insight about the operator | `.agents/operator-profile.md` | Direct edit by this skill |
|
|
46
|
+
| **Context** | Session-local knowledge with no durable home | Memory DB | `create_memory` tool |
|
|
47
|
+
|
|
48
|
+
### Category criteria
|
|
49
|
+
|
|
50
|
+
**Rule** — the insight is:
|
|
51
|
+
|
|
52
|
+
- A convention agents should follow (not a one-off observation).
|
|
53
|
+
- Actionable: "always do X" or "never do Y", not "we learned that...".
|
|
54
|
+
- Not architectural enough for DNA (local to one workspace, or not enforceable by a command).
|
|
55
|
+
- Already followed in practice but not written down.
|
|
56
|
+
|
|
57
|
+
**Decision** — the insight is:
|
|
58
|
+
|
|
59
|
+
- A choice between alternatives with a clear rationale.
|
|
60
|
+
- Architectural in nature (package boundaries, technology selection, pattern adoption).
|
|
61
|
+
- Not a cross-workspace invariant — it is a point-in-time decision that future changes may revisit.
|
|
62
|
+
|
|
63
|
+
**Invariant** — the insight is:
|
|
64
|
+
|
|
65
|
+
- Cross-workspace (applies to multiple apps/packages, not just one).
|
|
66
|
+
- Stable (not temporary or migration-period).
|
|
67
|
+
- Enforceable (a command could verify it, or it is documentation-only but permanent).
|
|
68
|
+
- Not already recorded in `ref(forge.yaml bindings.paths.invariantsFile)`.
|
|
69
|
+
|
|
70
|
+
**Pattern** — the insight is:
|
|
71
|
+
|
|
72
|
+
- A code abstraction, utility, or convention that appears in 2+ places.
|
|
73
|
+
- Genuinely portable (not project-specific).
|
|
74
|
+
- Worth extracting into `packages/forge/` for reuse across projects.
|
|
75
|
+
|
|
76
|
+
**Context** — the insight is:
|
|
77
|
+
|
|
78
|
+
- Session-local: relevant to the current task or current state, not a durable rule.
|
|
79
|
+
- Not worth a version-controlled file (too specific, too ephemeral).
|
|
80
|
+
- Useful for the next agent picking up this work area.
|
|
81
|
+
|
|
82
|
+
**Operator** — the insight is:
|
|
83
|
+
|
|
84
|
+
- About the operator's preferences, communication style, or working rhythm (not about code or architecture).
|
|
85
|
+
- Cumulative: builds a profile over time that helps the agent calibrate behavior.
|
|
86
|
+
- Not a rule for all agents — it is specific to this operator.
|
|
87
|
+
- Examples: "prefers concise responses", "works best in morning sessions", "dislikes long explanations", "responds well to visual summaries".
|
|
88
|
+
|
|
89
|
+
## Process
|
|
90
|
+
|
|
91
|
+
### 1. Read preferences and shared conventions
|
|
92
|
+
|
|
93
|
+
Read `PREFERENCES.md` at the repository root. Use `aiLanguage` for all communication.
|
|
94
|
+
|
|
95
|
+
Read `_shared/fo-pipeline-conventions.md` for commit discipline, language policy, and recoverable error handling.
|
|
96
|
+
|
|
97
|
+
### 2. Gather session insights
|
|
98
|
+
|
|
99
|
+
Review the current session to identify discoveries. Use in priority order:
|
|
100
|
+
|
|
101
|
+
1. **Explicit operator input** — if the operator described what they learned, use that.
|
|
102
|
+
2. **Session conversation** — scan for debugging discoveries, non-obvious behaviors, convention realizations, and "we always do X" moments.
|
|
103
|
+
3. **Git diff** — run `git diff HEAD` and `git log --oneline -10` to see what changed; changes may reveal patterns worth recording.
|
|
104
|
+
|
|
105
|
+
For each candidate, ask: "Would another agent working in this area benefit from knowing this?" If no, drop it. If yes, proceed to categorization.
|
|
106
|
+
|
|
107
|
+
### 3. Categorize and present
|
|
108
|
+
|
|
109
|
+
Present each insight with a proposed category and routing:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
## Session Insight Triage
|
|
113
|
+
|
|
114
|
+
| # | Insight | Category | Destination | Action |
|
|
115
|
+
| --- | --- | --- | --- | --- |
|
|
116
|
+
| 1 | hydrateFromArtifacts is mandatory when steps write state | Rule | packages/AGENTS.md | Direct edit |
|
|
117
|
+
| 2 | Model registry chosen over hardcoded clients | Decision | docs/adrs/ | Delegate to fo-idea-create-adr |
|
|
118
|
+
| 3 | Gogol ID must not equal phase ID | Invariant | ref(forge.yaml bindings.paths.invariantsFile) | Delegate to fo-extract-dna |
|
|
119
|
+
| 4 | Batch AI calls for large-context models | Pattern | packages/forge/ | Delegate to fo-harvest |
|
|
120
|
+
| 5 | Operator prefers concise responses without code blocks | Operator | .agents/operator-profile.md | Direct edit |
|
|
121
|
+
| 6 | Current pipeline state for mission X | Context | memory DB | create_memory |
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Ask the operator to confirm, adjust categories, or drop items using `ask_user_question`. Do not proceed without explicit confirmation.
|
|
125
|
+
|
|
126
|
+
### 4. Route each confirmed insight
|
|
127
|
+
|
|
128
|
+
#### 4a. Rule → AGENTS.md
|
|
129
|
+
|
|
130
|
+
For each rule insight:
|
|
131
|
+
|
|
132
|
+
1. **Identify the nearest applicable `AGENTS.md`** — root, `packages/AGENTS.md`, `services/AGENTS.md`, `docs/authoring/site-composition.md`, or a workspace-specific `AGENTS.md`. Use the same hierarchy rules as `fo-doc-audit` step 2a.
|
|
133
|
+
2. **Read** the target file before editing.
|
|
134
|
+
3. **Add the rule** in a minimal, actionable form: "Always implement `hydrateFromArtifacts` when a step writes state fields. The engine skips `validateBeforeStart` and `run()` when artifacts are valid, so downstream steps receive empty state." Include a code reference if applicable.
|
|
135
|
+
4. **Do not duplicate** rules already present in the target file. If the rule extends an existing section, append to it.
|
|
136
|
+
5. **Do not create `.agents/rules/*.md`** — `.agents/**` is reference/historical only per root AGENTS.md. Rules live in `AGENTS.md` files.
|
|
137
|
+
|
|
138
|
+
#### 4b. Decision → ADR
|
|
139
|
+
|
|
140
|
+
Invoke `fo-idea-create-adr` via the `skill` tool with the decision title and rationale gathered from the session. Let it run fully — it will grill, create the file, and validate.
|
|
141
|
+
|
|
142
|
+
#### 4c. Invariant → DNA
|
|
143
|
+
|
|
144
|
+
Invoke `fo-extract-dna` via the `skill` tool in convention description mode. Provide the invariant formulation from the session. Let it run fully — it will grill, create the RFC, and report.
|
|
145
|
+
|
|
146
|
+
#### 4d. Pattern → forge
|
|
147
|
+
|
|
148
|
+
Invoke `fo-harvest` via the `skill` tool with the pattern description. Let it run fully — it will grill on portability and port if accepted.
|
|
149
|
+
|
|
150
|
+
#### 4e. Operator → operator-profile.md
|
|
151
|
+
|
|
152
|
+
For each operator insight:
|
|
153
|
+
|
|
154
|
+
1. **Read `.agents/operator-profile.md`** if it exists. If it does not exist, create it from the template below.
|
|
155
|
+
2. **Determine the target section** based on the insight type:
|
|
156
|
+
- Communication preferences → `## Communication style`
|
|
157
|
+
- Working rhythm / session patterns → `## Working rhythm`
|
|
158
|
+
- Feedback / corrections → `## Feedback history`
|
|
159
|
+
- Emotional state / mood patterns → `## Emotional rhythm`
|
|
160
|
+
- Aesthetic preferences / creative influences → `## Aesthetic preferences`
|
|
161
|
+
- General preferences → `## Preferences`
|
|
162
|
+
3. **Add the entry** in a concise form with a date stamp: `- [YYYY-MM-DD] <insight>`.
|
|
163
|
+
4. **Entry expiry:** Entries in `## Emotional rhythm` and `## Feedback history` expire after 90 days unless refreshed. When adding a new entry, check existing entries in these sections:
|
|
164
|
+
- If an entry is older than 90 days and has not been refreshed, mark it as `[expired YYYY-MM-DD]` (where the date is the expiry date, not today).
|
|
165
|
+
- An entry is "refreshed" if the same insight is re-confirmed in a later session (update the date stamp).
|
|
166
|
+
- Do not delete expired entries — they remain as historical context but are marked expired.
|
|
167
|
+
5. **Zugangsstufen tagging:** Each section must be tagged with an access level:
|
|
168
|
+
- `[Öffentlich]` — visible to co-creators and in developer handoffs.
|
|
169
|
+
- `[Vertraulich]` — private to the operator and the agent; NOT included in developer handoff summaries.
|
|
170
|
+
- `## Emotional rhythm` and `## Feedback history` are always `[Vertraulich]`.
|
|
171
|
+
- `## Communication style`, `## Working rhythm`, `## Aesthetic preferences`, and `## Preferences` are `[Öffentlich]` by default.
|
|
172
|
+
6. **Do not include operator-profile.md contents in developer handoff summaries.** Only technical architecture, decisions, and code structure belong in handoffs.
|
|
173
|
+
|
|
174
|
+
**operator-profile.md template:**
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
# Operator Profile
|
|
178
|
+
|
|
179
|
+
Cumulative knowledge about the operator. This file is gitignored by default to protect privacy.
|
|
180
|
+
|
|
181
|
+
## Communication style [Öffentlich]
|
|
182
|
+
|
|
183
|
+
- [YYYY-MM-DD] <insight>
|
|
184
|
+
|
|
185
|
+
## Working rhythm [Öffentlich]
|
|
186
|
+
|
|
187
|
+
- [YYYY-MM-DD] <insight>
|
|
188
|
+
|
|
189
|
+
## Preferences [Öffentlich]
|
|
190
|
+
|
|
191
|
+
- [YYYY-MM-DD] <insight>
|
|
192
|
+
|
|
193
|
+
## Aesthetic preferences [Öffentlich]
|
|
194
|
+
|
|
195
|
+
- [YYYY-MM-DD] <insight>
|
|
196
|
+
|
|
197
|
+
## Feedback history [Vertraulich]
|
|
198
|
+
|
|
199
|
+
- [YYYY-MM-DD] <insight>
|
|
200
|
+
|
|
201
|
+
## Emotional rhythm [Vertraulich]
|
|
202
|
+
|
|
203
|
+
- [YYYY-MM-DD] <insight>
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### 4f. Context → memory
|
|
207
|
+
|
|
208
|
+
Use the `create_memory` tool to save the insight with appropriate tags. Use a descriptive title and include enough context for the next agent to understand why it matters.
|
|
209
|
+
|
|
210
|
+
### 5. Commit
|
|
211
|
+
|
|
212
|
+
Commit rule edits to `AGENTS.md` files separately from any delegated skill output (ADRs, RFCs, forge ports — those skills commit their own files).
|
|
213
|
+
|
|
214
|
+
```txt
|
|
215
|
+
docs: add <rule description> to <AGENTS.md path>
|
|
216
|
+
|
|
217
|
+
Session retro: captured <N> rule(s) from session insights.
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Stage only the `AGENTS.md` files this skill edited. Do not stage unrelated changes. See `_shared/fo-pipeline-conventions.md` §Commit discipline.
|
|
221
|
+
|
|
222
|
+
If no rule insights were confirmed (all were delegated or context), skip this step — the delegated skills handle their own commits.
|
|
223
|
+
|
|
224
|
+
### 6. Profile review
|
|
225
|
+
|
|
226
|
+
If any operator insights were routed to `.agents/operator-profile.md`, offer the operator a profile review:
|
|
227
|
+
|
|
228
|
+
1. **Show the current profile** (or the relevant sections that changed).
|
|
229
|
+
2. **Ask:** "Would you like to review or adjust any of these entries?"
|
|
230
|
+
3. **Apply adjustments** if the operator requests changes.
|
|
231
|
+
4. **Remind the operator** that they can delete `.agents/operator-profile.md` at any time — it is their personal knowledge file.
|
|
232
|
+
|
|
233
|
+
### 7. Report
|
|
234
|
+
|
|
235
|
+
Present a concise summary in `aiLanguage`. **Translate all labels, headings, and column names to `aiLanguage`** — the template below is structural only. Only identifiers (file paths, skill names, RFC/ADR ids) stay untranslated.
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
## <Session Retro Summary in aiLanguage>
|
|
239
|
+
|
|
240
|
+
### <Insights discovered>: <N>
|
|
241
|
+
### <Insights confirmed>: <M>
|
|
242
|
+
|
|
243
|
+
| # | <Insight> | <Category> | <Routed to> | <Status> |
|
|
244
|
+
| --- | --- | --- | --- | --- |
|
|
245
|
+
| 1 | ... | Rule | packages/AGENTS.md | committed |
|
|
246
|
+
| 2 | ... | Decision | fo-idea-create-adr | ADR-XXXX created |
|
|
247
|
+
| 3 | ... | Invariant | fo-extract-dna | RFC-XXXX drafted |
|
|
248
|
+
| 4 | ... | Pattern | fo-harvest | ported to forge |
|
|
249
|
+
| 5 | ... | Operator | .agents/operator-profile.md | committed |
|
|
250
|
+
| 6 | ... | Context | memory DB | saved |
|
|
251
|
+
|
|
252
|
+
### <Delegated skills invoked>: <count>
|
|
253
|
+
### <Direct edits>: <count>
|
|
254
|
+
### <Commit>: <hash | none — no direct edits>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Relationship to other session-end skills
|
|
258
|
+
|
|
259
|
+
| Skill | Question | Overlap |
|
|
260
|
+
| --- | --- | --- |
|
|
261
|
+
| `fo-doc-audit` | "Are existing docs accurate?" | Complementary — checks accuracy of existing docs. `fo-session-retro` captures new knowledge. Run `fo-doc-audit` first, then `fo-session-retro`. |
|
|
262
|
+
| `fo-handoff` | "What does the next agent need?" | Complementary — writes a handoff doc for continuity. `fo-session-retro` captures durable knowledge. A handoff doc may reference insights captured by `fo-session-retro`. |
|
|
263
|
+
|
|
264
|
+
Recommended session-end sequence: `fo-doc-audit` → `fo-session-retro` → `fo-handoff`.
|
|
265
|
+
|
|
266
|
+
## Constraints
|
|
267
|
+
|
|
268
|
+
- **Document-only.** This skill must not modify, create, or delete source code files. The only files it may directly edit are `AGENTS.md` files (for rule insights) and `.agents/operator-profile.md` (for operator insights, RFC-XXXX). All other routing is via delegation to skills that own their output.
|
|
269
|
+
- **No `.agents/rules/` files.** Rules live in `AGENTS.md` files, which are loaded into every agent's system prompt. `.agents/**` is reference/historical only per root AGENTS.md.
|
|
270
|
+
- **Delegation, not duplication.** For ADR, DNA, and pattern insights, delegate to the appropriate skill. Do not create ADRs, RFCs, or forge packages directly.
|
|
271
|
+
- **Operator confirmation is mandatory.** Do not route any insight without explicit confirmation of category and destination.
|
|
272
|
+
- **Minimal edits.** Add rules in the most concise actionable form. Do not rewrite existing sections.
|
|
273
|
+
- **Read before edit.** Always read the target `AGENTS.md` before editing to preserve structure and avoid duplicates.
|
|
274
|
+
- **Commit only your own files.** Stage only `AGENTS.md` files this skill edited. Delegated skills commit their own output. See `_shared/fo-pipeline-conventions.md` §Commit discipline.
|
|
275
|
+
- **No pauses for recoverable tool errors.** See `_shared/fo-pipeline-conventions.md` §Recoverable errors.
|
|
276
|
+
- **Session summary.** End every session with the closing block defined in `_shared/fo-session-summary.md`.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fo-session-save
|
|
3
|
+
description: Enhance saved session transcripts with semantic annotations, summaries, and quality checks. Self-learning via knowledge files.
|
|
4
|
+
invocation: user
|
|
5
|
+
category: fo
|
|
6
|
+
concerns: document-only
|
|
7
|
+
dependsOn: ['my-preferences']
|
|
8
|
+
languagePolicy: ref(PREFERENCES.md)
|
|
9
|
+
knowledge: [qa-log.md, learned-principles.md, fix-patterns.md]
|
|
10
|
+
bindings:
|
|
11
|
+
requires: [paths.sessionsDir]
|
|
12
|
+
optional: []
|
|
13
|
+
triggers: ["save this session", "enhance session transcript with annotations", "save session with quality checks"]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# fo-session-save
|
|
17
|
+
|
|
18
|
+
Enhance saved session transcripts with semantic annotations, summaries, and quality checks. Self-learning via knowledge files.
|
|
19
|
+
|
|
20
|
+
## When to use
|
|
21
|
+
|
|
22
|
+
- At the end of a coding session, after `session.save` has converted raw ATIF files to structured markdown.
|
|
23
|
+
- When the operator asks to "save this session" or "annotate the session transcript".
|
|
24
|
+
- NOT for session-end insight triage — use `fo-session-retro` for that.
|
|
25
|
+
|
|
26
|
+
## Process
|
|
27
|
+
|
|
28
|
+
1. **Read `PREFERENCES.md`** at the repository root. If `saveSessions: false`, exit immediately with "Session saving disabled by operator preference."
|
|
29
|
+
|
|
30
|
+
2. **Check for raw files** in `docs/sessions/.raw/`. If raw files exist, run `session.save` first to convert them to structured markdown:
|
|
31
|
+
<!-- skill-lint-disable SKILL-11 -->
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
pnpm exec site-kernel run session.save --json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
3. **Read the most recently saved session file** from `docs/sessions/`. If no session files exist, exit with "No session files to annotate."
|
|
38
|
+
|
|
39
|
+
4. **Read knowledge files** (`qa-log.md`, `learned-principles.md`, `fix-patterns.md`) for accumulated knowledge from previous sessions.
|
|
40
|
+
|
|
41
|
+
5. **Analyze the transcript semantically:**
|
|
42
|
+
- Generate a 1-3 sentence `summary` of the session's purpose and outcome.
|
|
43
|
+
- Identify key `decisions` made during the session (not just commands mentioned).
|
|
44
|
+
- Identify `relatedArtifacts` — RFCs, ADRs, files, commits that are semantically related.
|
|
45
|
+
- Refine auto-detected `types` — override or extend based on semantic understanding.
|
|
46
|
+
- Verify auto-extracted metadata is accurate; flag and fix false positives.
|
|
47
|
+
|
|
48
|
+
6. **Update the session file:**
|
|
49
|
+
- Update frontmatter: `summary`, `decisions`, refined `types`, corrected metadata.
|
|
50
|
+
- Append a `## Session notes` section with structured annotations.
|
|
51
|
+
|
|
52
|
+
7. **Update knowledge files** with any new insights:
|
|
53
|
+
- `qa-log.md`: Log any questions asked and operator answers.
|
|
54
|
+
- `learned-principles.md`: New principles learned across sessions.
|
|
55
|
+
- `fix-patterns.md`: Patterns of errors in auto-extraction and their fixes.
|
|
56
|
+
|
|
57
|
+
8. **Report** what was annotated/changed.
|
|
58
|
+
|
|
59
|
+
## Autonomy
|
|
60
|
+
|
|
61
|
+
- Do NOT ask the operator questions unless you encounter a genuine ambiguity you cannot resolve.
|
|
62
|
+
- Read `PREFERENCES.md` at start and no-op if `saveSessions: false`.
|
|
63
|
+
- Read knowledge files for accumulated knowledge before processing.
|
|
64
|
+
- Write to knowledge files after processing (self-learning).
|
|
65
|
+
|
|
66
|
+
## Constraints
|
|
67
|
+
|
|
68
|
+
- **Redact sensitive information**: Remove API keys, passwords, PII from the transcript before saving. Same redaction pattern as `fo-handoff`.
|
|
69
|
+
- **Do not modify the `## Transcript` section** — that is the deterministic output of `session.save`. Only add/modify `## Session notes` and frontmatter.
|
|
70
|
+
- **Do not delete session files** — archiving is handled by `session.archive`.
|
|
71
|
+
- **Verify RFC-ids exist** before listing them in `relatedRfcs` (learned-principles: "always verify RFC-id exists before listing as related").
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Fix Patterns
|
|
2
|
+
|
|
3
|
+
Patterns of errors in auto-extracted metadata (by `session.save`) and their fixes (applied by `fo-session-save` skill). Each pattern helps the skill recognize and correct common extraction mistakes.
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each entry: pattern name, symptom, root cause, fix.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
1. **False-positive RFC-id in comments**
|
|
12
|
+
|
|
13
|
+
- **Symptom:** `relatedRfcs` contains an RFC-id that doesn't exist.
|
|
14
|
+
- **Root cause:** Regex `RFC-\d{4}` matches references in code comments, URLs, or quoted text that aren't actual related RFCs.
|
|
15
|
+
- **Fix:** Verify each RFC-id exists in `docs/rfcs/` before keeping it in `relatedRfcs`. Remove non-existent ones.
|
|
16
|
+
|
|
17
|
+
2. **Commit hash matching version numbers**
|
|
18
|
+
|
|
19
|
+
- **Symptom:** `commits` array contains strings like `1.0.0` or `12345678`.
|
|
20
|
+
- **Root cause:** Regex `\b[0-9a-f]{7,40}\b` matches version strings and short numeric sequences.
|
|
21
|
+
- **Fix:** Filter out strings that look like version numbers (contain dots) or are pure decimal numbers. Verify remaining hashes correspond to actual git commits.
|
|
22
|
+
|
|
23
|
+
3. **File paths from error messages**
|
|
24
|
+
|
|
25
|
+
- **Symptom:** `files` array contains paths from error messages or stack traces that weren't actually edited.
|
|
26
|
+
- **Root cause:** Regex matches any path starting with `packages/`, `docs/`, etc., including paths in error output.
|
|
27
|
+
- **Fix:** Cross-reference with `commits` and actual git diff to identify files that were genuinely modified during the session.
|
|
28
|
+
|
|
29
|
+
4. **Missing session type**
|
|
30
|
+
|
|
31
|
+
- **Symptom:** Auto-detected `types` is `["freeform"]` but the session clearly involved implementation or review.
|
|
32
|
+
- **Root cause:** The type detection patterns didn't match the specific phrasing used in the session.
|
|
33
|
+
- **Fix:** Semantically analyze the transcript and override `types` with the correct classification.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Learned Principles
|
|
2
|
+
|
|
3
|
+
Principles learned across sessions by the `fo-session-save` skill. These are accumulated observations about session transcript quality, metadata extraction accuracy, and annotation patterns.
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each principle: a concise statement, optionally with a rationale.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
1. **Always verify RFC-id exists before listing as related.** The `session.save` command extracts RFC-ids via regex (`RFC-\d{4}`), which can match references in comments, URLs, or quoted text. Before confirming a `relatedRfcs` entry, check that the RFC file exists in `docs/rfcs/`.
|
|
12
|
+
|
|
13
|
+
2. **Commit hash regex matches version numbers — filter by context.** The regex `\b[0-9a-f]{7,40}\b` can match version strings like `1.0.0`. The `session.save` handler filters pure numeric strings ≤ 8 chars, but the skill should also verify that extracted hashes correspond to actual git commits in the session's work.
|
|
14
|
+
|
|
15
|
+
3. **Session types are not mutually exclusive.** A single session can involve grilling followed by implementation. The `types` array should reflect all major activities, not just the dominant one.
|
|
16
|
+
|
|
17
|
+
4. **The `## Transcript` section is deterministic output.** Never modify it. Only add `## Session notes` and update frontmatter.
|
|
18
|
+
|
|
19
|
+
5. **Redact sensitive information before saving.** API keys, passwords, PII must be removed from the transcript. Same redaction pattern as `fo-handoff`.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Q&A Log
|
|
2
|
+
|
|
3
|
+
This file logs questions the `fo-session-save` skill asked (if any) and operator answers, for meta-analysis and self-learning.
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each entry: date, question, answer, context.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
*(no questions asked yet — initial creation)*
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fo-spec-ingest
|
|
3
|
+
description: Ingest an external specification package into docs/specs/ or author a spec skeleton from fo-idea escalation. Builds forge-spec.yaml, validates, grills the spec delta, and obtains operator acceptance.
|
|
4
|
+
invocation: user
|
|
5
|
+
category: fo
|
|
6
|
+
concerns: document-only
|
|
7
|
+
dependsOn: ['my-preferences', 'grilling']
|
|
8
|
+
languagePolicy: ref(PREFERENCES.md)
|
|
9
|
+
bindings:
|
|
10
|
+
requires: [commands.specValidate]
|
|
11
|
+
optional: [paths.invariantsFile]
|
|
12
|
+
triggers: ["ingest external specification", "vendor spec package into docs", "author spec skeleton"]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Spec Ingest
|
|
16
|
+
|
|
17
|
+
Before starting, read `PREFERENCES.md` at the repository root. If the file is missing or `aiLanguage` is unset, ask the operator once and create the file using the `my-preferences` skill semantics.
|
|
18
|
+
|
|
19
|
+
> **This is a document-only skill.** It produces files under `docs/specs/<id>/` — snapshot, `forge-spec.yaml`, `integrity.yaml`, and `amendments/`. It must never modify source code in `apps/`, `packages/`, `services/`, or any other directory.
|
|
20
|
+
|
|
21
|
+
## Two modes
|
|
22
|
+
|
|
23
|
+
### Ingest mode
|
|
24
|
+
|
|
25
|
+
Invoked as `/fo-spec-ingest <path-to-package>` when the operator has an external specification package (e.g. a consultant deliverable, an Obsidian vault export).
|
|
26
|
+
|
|
27
|
+
### Authoring mode
|
|
28
|
+
|
|
29
|
+
Invoked inline by `fo-idea` when decomposition yields more than 7 atomic decisions with at least one dependency edge. The skeleton is built from `fo-idea`'s decomposition + grilling output instead of an external package.
|
|
30
|
+
|
|
31
|
+
## Process (ingest mode)
|
|
32
|
+
|
|
33
|
+
### 1. Locate and inventory the package
|
|
34
|
+
|
|
35
|
+
List all files in the package directory. Identify candidate roles by filename and headings:
|
|
36
|
+
|
|
37
|
+
- **Spec / overview** — README, index, overview
|
|
38
|
+
- **Entity model** — files with "entity", "model", "schema", "field" in name or headings
|
|
39
|
+
- **Roadmap** — files with "roadmap", "plan", "wave", "stage", "phase" in name or headings
|
|
40
|
+
- **Decision log** — files with "decision", "adr", "architecture" in name or headings
|
|
41
|
+
|
|
42
|
+
Facts are looked up from the files. Only ambiguous role mappings become operator questions — one at a time, recommended answer first.
|
|
43
|
+
|
|
44
|
+
### 2. Choose spec-id
|
|
45
|
+
|
|
46
|
+
Propose a kebab-case `spec-id` from the package title. Ask the operator to confirm.
|
|
47
|
+
|
|
48
|
+
### 3. Vendor the snapshot
|
|
49
|
+
|
|
50
|
+
Copy files byte-exact into `docs/specs/<id>/`. Generate `integrity.yaml` with SHA-256 hashes for every snapshot file (excluding `forge-spec.yaml`, `integrity.yaml`, and `amendments/**`). Create an empty `amendments/` directory.
|
|
51
|
+
|
|
52
|
+
### 4. Build forge-spec.yaml
|
|
53
|
+
|
|
54
|
+
Extract from the package documents:
|
|
55
|
+
|
|
56
|
+
- `documents` — logical name → relative path mapping
|
|
57
|
+
- `decisions[]` — id, title, status, rationale (from the decision log)
|
|
58
|
+
- `rfcs[]` — id, title, dependsOn, wave, sources (from the roadmap)
|
|
59
|
+
- `waves[]` — id, name, goal
|
|
60
|
+
|
|
61
|
+
Where the package predefines an RFC granularity that mismatches repository practice, you MAY merge nodes — but MUST respect any explicit "do not combine" constraints in the package, and MUST record every merge as a mapping note in the node's title suffix `(merges <id>, <id>)`.
|
|
62
|
+
|
|
63
|
+
### 5. Validate
|
|
64
|
+
|
|
65
|
+
Run `ref(forge.yaml bindings.commands.specValidate) --spec=<id>`. Fix projection errors until clean. **Never touch snapshot files** — if the package itself is inconsistent (e.g. a real dependency cycle), record the finding and ask the operator.
|
|
66
|
+
|
|
67
|
+
### 6. Spec-level grilling
|
|
68
|
+
|
|
69
|
+
Invoke `/grilling` to stress-test the spec delta against the project:
|
|
70
|
+
|
|
71
|
+
- Conflicts with the invariants file (`ref(forge.yaml bindings.paths.invariantsFile)`)
|
|
72
|
+
- Forward-only violations
|
|
73
|
+
- Storage policy conflicts
|
|
74
|
+
- Naming collisions
|
|
75
|
+
- Unrealistic dependencies
|
|
76
|
+
|
|
77
|
+
If `ref(forge.yaml bindings.paths.invariantsFile)` is `null` or the file is absent, skip the DNA-alignment part and report `Degraded: invariantsFile not configured — DNA alignment skipped`.
|
|
78
|
+
|
|
79
|
+
Findings that require spec changes are recorded as **pre-acceptance amendments** in `amendments/` (RFC-XXXX format). The snapshot stays immutable even before acceptance.
|
|
80
|
+
|
|
81
|
+
### 7. Acceptance decision
|
|
82
|
+
|
|
83
|
+
Present a compact summary in `aiLanguage`. **Translate all labels, headings, and column names to `aiLanguage`** — the template below is structural only.
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
## <Spec Ingest Summary in aiLanguage>
|
|
87
|
+
|
|
88
|
+
### Spec: <id> (<title>)
|
|
89
|
+
### Snapshot: <N> files vendored, integrity manifest written
|
|
90
|
+
### Projection: <N> decisions, <N> roadmap nodes, <N> waves
|
|
91
|
+
### spec.validate: pass
|
|
92
|
+
### Spec-level grilling: <N> findings, <N> pre-acceptance amendments
|
|
93
|
+
### Degraded: <none | list of skipped capabilities>
|
|
94
|
+
### Acceptance: accepted by human:<handle> | declined (status: vendored)
|
|
95
|
+
### Next step: /fo-spec-materialize <id>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Ask the operator to accept or decline.
|
|
99
|
+
|
|
100
|
+
- **On acceptance**: set `status: accepted`, `reviewers: [human:<handle>]` in `forge-spec.yaml`.
|
|
101
|
+
- **On decline**: leave `status: vendored` and stop.
|
|
102
|
+
|
|
103
|
+
### 8. Commit
|
|
104
|
+
|
|
105
|
+
Commit with message `spec: ingest <id> …` staging only `docs/specs/<id>/**`.
|
|
106
|
+
|
|
107
|
+
### 9. Report
|
|
108
|
+
|
|
109
|
+
Present the summary above as the final report.
|
|
110
|
+
|
|
111
|
+
## Process (authoring mode)
|
|
112
|
+
|
|
113
|
+
Steps 2, 4–9 with the skeleton built from `fo-idea`'s decomposition + grilling output instead of an external package. `documents` may be empty. Set `sourceNote: "authored in-repo via fo-idea escalation"`.
|
|
114
|
+
|
|
115
|
+
## Failure modes
|
|
116
|
+
|
|
117
|
+
- Package path unreadable or empty: stop before touching `docs/specs/`.
|
|
118
|
+
- `spec-id` already exists in `docs/specs/`: stop; re-vendoring is RFC-XXXX's `@N+1` path.
|
|
119
|
+
- `spec.validate` cannot pass by projection fixes alone: record the finding, ask the operator — amend at ingest or abort.
|
|
120
|
+
- Operator declines acceptance: spec stays `vendored`; materialization refuses non-accepted specs.
|
|
121
|
+
|
|
122
|
+
## MUST NOT
|
|
123
|
+
|
|
124
|
+
- MUST NOT set `status: accepted` without an explicit operator acceptance in the session.
|
|
125
|
+
- MUST NOT modify snapshot files during ingest, including "obvious typo fixes" — pre-acceptance amendments are the only correction channel.
|
|
126
|
+
- MUST NOT ask mapping questions about anything derivable from the package files.
|
|
127
|
+
- MUST NOT record node merges silently — every merge must be noted in the node's title.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fo-triage
|
|
3
|
+
description: Move issues and external PRs through a triage state machine — categorize, verify, grill, write agent-ready briefs. Use for incoming bug reports and feature requests.
|
|
4
|
+
invocation: user
|
|
5
|
+
category: fo
|
|
6
|
+
concerns: document-only
|
|
7
|
+
dependsOn: ['my-preferences', 'grilling']
|
|
8
|
+
languagePolicy: ref(PREFERENCES.md)
|
|
9
|
+
triggers: ["triage this issue", "categorize incoming bug report", "triage external pull request", "process feature request"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# fo-triage
|
|
13
|
+
|
|
14
|
+
Before starting, read `PREFERENCES.md` at the repository root. If the file is missing or `aiLanguage` is unset, ask the operator once and create the file using the `my-preferences` skill semantics.
|
|
15
|
+
|
|
16
|
+
Move incoming issues and external PRs through a triage state machine. For each issue: categorize, verify, grill if needed, and write an agent-ready brief that a fresh agent can pick up with no human context.
|
|
17
|
+
|
|
18
|
+
## State machine
|
|
19
|
+
|
|
20
|
+
Five canonical roles, each mapped to a label:
|
|
21
|
+
|
|
22
|
+
| Role | Label | Meaning |
|
|
23
|
+
| ----------------- | --------------- | -------------------------------------------------------- |
|
|
24
|
+
| `needs-triage` | needs-triage | Maintainer must evaluate |
|
|
25
|
+
| `needs-info` | needs-info | Waiting on reporter |
|
|
26
|
+
| `ready-for-agent` | ready-for-agent | Fully specified, agent can pick up with no human context |
|
|
27
|
+
| `ready-for-human` | ready-for-human | Needs human implementation |
|
|
28
|
+
| `wontfix` | wontfix | Will not be actioned |
|
|
29
|
+
|
|
30
|
+
The issue tracker and triage label vocabulary should have been configured. If not, ask the operator which tracker and labels to use.
|
|
31
|
+
|
|
32
|
+
## Process
|
|
33
|
+
|
|
34
|
+
### 1. Gather the queue
|
|
35
|
+
|
|
36
|
+
Collect issues that need triage. Sources:
|
|
37
|
+
|
|
38
|
+
- **GitHub** — `gh issue list --label needs-triage`
|
|
39
|
+
- **GitLab** — `glab issue list --label needs-triage`
|
|
40
|
+
- **Local markdown** — scan `.scratch/` or the configured local tracker
|
|
41
|
+
- **External PRs** — if the operator enabled PRs as a request surface, include external PRs in the queue. Collaborators' in-flight PRs are left alone.
|
|
42
|
+
|
|
43
|
+
### 2. Triage each issue
|
|
44
|
+
|
|
45
|
+
For each issue, work through these steps:
|
|
46
|
+
|
|
47
|
+
#### 2a. Categorize
|
|
48
|
+
|
|
49
|
+
Classify as `bug` or `enhancement`:
|
|
50
|
+
|
|
51
|
+
- **Bug** — the system does something it shouldn't, or doesn't do something it should.
|
|
52
|
+
- **Enhancement** — a request for new functionality or improved behavior.
|
|
53
|
+
|
|
54
|
+
#### 2b. Verify
|
|
55
|
+
|
|
56
|
+
For bugs:
|
|
57
|
+
|
|
58
|
+
- Can you reproduce it from the description?
|
|
59
|
+
- Is there a clear expected vs actual behavior?
|
|
60
|
+
- Are there steps to reproduce?
|
|
61
|
+
|
|
62
|
+
If the issue lacks enough info to verify, move to `needs-info` and ask the reporter for specifics.
|
|
63
|
+
|
|
64
|
+
#### 2c. Grill (if needed)
|
|
65
|
+
|
|
66
|
+
If the issue is an enhancement that's vague or under-specified, run the `grilling` skill to stress-test the request. Ask one question at a time. Look up facts in the codebase rather than asking the reporter.
|
|
67
|
+
|
|
68
|
+
#### 2d. Write the brief
|
|
69
|
+
|
|
70
|
+
If the issue is fully specified, write an agent-ready brief and move to `ready-for-agent`. The brief must include:
|
|
71
|
+
|
|
72
|
+
- **What to build** — the end-to-end behaviour, from the user's perspective.
|
|
73
|
+
- **Acceptance criteria** — checkable, unambiguous.
|
|
74
|
+
- **Domain language** — use the project's ubiquitous language, not internal module names.
|
|
75
|
+
- **No file paths or line numbers** — they go stale.
|
|
76
|
+
|
|
77
|
+
### 3. Update labels
|
|
78
|
+
|
|
79
|
+
Apply the appropriate label to each issue after triaging it. Remove `needs-triage` and add the destination label.
|
|
80
|
+
|
|
81
|
+
### 4. Report
|
|
82
|
+
|
|
83
|
+
After triaging all issues in the queue, present a summary in `aiLanguage`. **Translate all labels and column names to `aiLanguage`** — the template below is structural only.
|
|
84
|
+
|
|
85
|
+
| Issue | Category | Result | Label applied |
|
|
86
|
+
| ----- | ----------- | --------------- | --------------- |
|
|
87
|
+
| #42 | bug | ready-for-agent | ready-for-agent |
|
|
88
|
+
| #43 | enhancement | needs-info | needs-info |
|
|
89
|
+
| #44 | bug | wontfix | wontfix |
|
|
90
|
+
|
|
91
|
+
## Constraints
|
|
92
|
+
|
|
93
|
+
- **Triage is only for issues you didn't create.** Tickets produced by other skills are already agent-ready — don't re-triage them.
|
|
94
|
+
- **No file paths or line numbers in briefs.** They go stale. Use domain language.
|
|
95
|
+
- **One question at a time during grilling.** See the `grilling` skill.
|
|
96
|
+
- **Commit only your own files.** This skill modifies issue labels, not source files. See `_shared/fo-pipeline-conventions.md` §Commit discipline.
|
|
97
|
+
- **Session summary.** End every session with the closing block defined in `_shared/fo-session-summary.md`.
|