@zmice/zc 0.1.0 → 0.2.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/README.md +153 -87
- package/dist/adapters/codex.d.ts.map +1 -1
- package/dist/adapters/codex.js +4 -2
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/qwen-code.d.ts.map +1 -1
- package/dist/adapters/qwen-code.js +7 -5
- package/dist/adapters/qwen-code.js.map +1 -1
- package/dist/cli/__tests__/i18n.test.d.ts +2 -0
- package/dist/cli/__tests__/i18n.test.d.ts.map +1 -0
- package/dist/cli/__tests__/i18n.test.js +45 -0
- package/dist/cli/__tests__/i18n.test.js.map +1 -0
- package/dist/cli/__tests__/platform.test.d.ts +2 -0
- package/dist/cli/__tests__/platform.test.d.ts.map +1 -0
- package/dist/cli/__tests__/platform.test.js +483 -0
- package/dist/cli/__tests__/platform.test.js.map +1 -0
- package/dist/cli/__tests__/surface.test.d.ts +2 -0
- package/dist/cli/__tests__/surface.test.d.ts.map +1 -0
- package/dist/cli/__tests__/surface.test.js +15 -0
- package/dist/cli/__tests__/surface.test.js.map +1 -0
- package/dist/cli/__tests__/toolkit.test.d.ts +2 -0
- package/dist/cli/__tests__/toolkit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/toolkit.test.js +72 -0
- package/dist/cli/__tests__/toolkit.test.js.map +1 -0
- package/dist/cli/__tests__/upstream.test.d.ts +2 -0
- package/dist/cli/__tests__/upstream.test.d.ts.map +1 -0
- package/dist/cli/__tests__/upstream.test.js +163 -0
- package/dist/cli/__tests__/upstream.test.js.map +1 -0
- package/dist/cli/doctor.js +21 -21
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +34 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/msg.d.ts.map +1 -1
- package/dist/cli/msg.js +73 -5
- package/dist/cli/msg.js.map +1 -1
- package/dist/cli/platform.d.ts +32 -0
- package/dist/cli/platform.d.ts.map +1 -0
- package/dist/cli/platform.js +635 -0
- package/dist/cli/platform.js.map +1 -0
- package/dist/cli/run.js +7 -7
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/setup.js +7 -7
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/task.d.ts.map +1 -1
- package/dist/cli/task.js +108 -8
- package/dist/cli/task.js.map +1 -1
- package/dist/cli/team.d.ts +12 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +82 -39
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/toolkit.d.ts +3 -0
- package/dist/cli/toolkit.d.ts.map +1 -0
- package/dist/cli/toolkit.js +160 -0
- package/dist/cli/toolkit.js.map +1 -0
- package/dist/cli/upstream.d.ts +19 -0
- package/dist/cli/upstream.d.ts.map +1 -0
- package/dist/cli/upstream.js +705 -0
- package/dist/cli/upstream.js.map +1 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.d.ts +72 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.d.ts.map +1 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.js +105 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.js.map +1 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.test.d.ts +2 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.test.d.ts.map +1 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.test.js +104 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -0
- package/dist/node_modules/@zmice/platform-core/package.json +34 -0
- package/dist/platform-state/index.d.ts +4 -0
- package/dist/platform-state/index.d.ts.map +1 -0
- package/dist/platform-state/index.js +3 -0
- package/dist/platform-state/index.js.map +1 -0
- package/dist/platform-state/receipt.d.ts +11 -0
- package/dist/platform-state/receipt.d.ts.map +1 -0
- package/dist/platform-state/receipt.js +27 -0
- package/dist/platform-state/receipt.js.map +1 -0
- package/dist/platform-state/status.d.ts +3 -0
- package/dist/platform-state/status.d.ts.map +1 -0
- package/dist/platform-state/status.js +82 -0
- package/dist/platform-state/status.js.map +1 -0
- package/dist/platform-state/status.test.d.ts +2 -0
- package/dist/platform-state/status.test.d.ts.map +1 -0
- package/dist/platform-state/status.test.js +120 -0
- package/dist/platform-state/status.test.js.map +1 -0
- package/dist/platform-state/types.d.ts +58 -0
- package/dist/platform-state/types.d.ts.map +1 -0
- package/dist/platform-state/types.js +2 -0
- package/dist/platform-state/types.js.map +1 -0
- package/dist/runtime/__tests__/logger.test.d.ts +2 -0
- package/dist/runtime/__tests__/logger.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/logger.test.js +11 -0
- package/dist/runtime/__tests__/logger.test.js.map +1 -0
- package/dist/runtime/__tests__/session-manager.test.d.ts +2 -0
- package/dist/runtime/__tests__/session-manager.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/session-manager.test.js +11 -0
- package/dist/runtime/__tests__/session-manager.test.js.map +1 -0
- package/dist/runtime/__tests__/worktree-manager.test.d.ts +2 -0
- package/dist/runtime/__tests__/worktree-manager.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/worktree-manager.test.js +11 -0
- package/dist/runtime/__tests__/worktree-manager.test.js.map +1 -0
- package/dist/runtime/logger.d.ts +5 -1
- package/dist/runtime/logger.d.ts.map +1 -1
- package/dist/runtime/logger.js +11 -1
- package/dist/runtime/logger.js.map +1 -1
- package/dist/runtime/state.d.ts +2 -8
- package/dist/runtime/state.d.ts.map +1 -1
- package/dist/runtime/state.js +7 -15
- package/dist/runtime/state.js.map +1 -1
- package/dist/runtime/worktree-manager.d.ts +5 -26
- package/dist/runtime/worktree-manager.d.ts.map +1 -1
- package/dist/runtime/worktree-manager.js +34 -98
- package/dist/runtime/worktree-manager.js.map +1 -1
- package/dist/team/__tests__/mailbox.test.d.ts +2 -0
- package/dist/team/__tests__/mailbox.test.d.ts.map +1 -0
- package/dist/team/__tests__/mailbox.test.js +22 -0
- package/dist/team/__tests__/mailbox.test.js.map +1 -0
- package/dist/team/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/team/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/team/__tests__/orchestrator.test.js +13 -0
- package/dist/team/__tests__/orchestrator.test.js.map +1 -0
- package/dist/team/__tests__/task-queue.test.d.ts +2 -0
- package/dist/team/__tests__/task-queue.test.d.ts.map +1 -0
- package/dist/team/__tests__/task-queue.test.js +28 -0
- package/dist/team/__tests__/task-queue.test.js.map +1 -0
- package/dist/team/__tests__/worker-manager.test.d.ts +2 -0
- package/dist/team/__tests__/worker-manager.test.d.ts.map +1 -0
- package/dist/team/__tests__/worker-manager.test.js +13 -0
- package/dist/team/__tests__/worker-manager.test.js.map +1 -0
- package/dist/team/mailbox.d.ts +12 -10
- package/dist/team/mailbox.d.ts.map +1 -1
- package/dist/team/mailbox.js +40 -27
- package/dist/team/mailbox.js.map +1 -1
- package/dist/team/orchestrator.d.ts +1 -6
- package/dist/team/orchestrator.d.ts.map +1 -1
- package/dist/team/orchestrator.js +27 -67
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/task-queue.d.ts +18 -17
- package/dist/team/task-queue.d.ts.map +1 -1
- package/dist/team/task-queue.js +68 -71
- package/dist/team/task-queue.js.map +1 -1
- package/dist/team/worker-manager.d.ts +13 -36
- package/dist/team/worker-manager.d.ts.map +1 -1
- package/dist/team/worker-manager.js +34 -129
- package/dist/team/worker-manager.js.map +1 -1
- package/dist/utils/config.d.ts +15 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +39 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/install-target.d.ts +23 -0
- package/dist/utils/install-target.d.ts.map +1 -0
- package/dist/utils/install-target.js +89 -0
- package/dist/utils/install-target.js.map +1 -0
- package/dist/utils/install-target.test.d.ts +2 -0
- package/dist/utils/install-target.test.d.ts.map +1 -0
- package/dist/utils/install-target.test.js +71 -0
- package/dist/utils/install-target.test.js.map +1 -0
- package/dist/utils/platform-install-receipt.d.ts +11 -0
- package/dist/utils/platform-install-receipt.d.ts.map +1 -0
- package/dist/utils/platform-install-receipt.js +62 -0
- package/dist/utils/platform-install-receipt.js.map +1 -0
- package/dist/utils/platform-install-receipt.test.d.ts +2 -0
- package/dist/utils/platform-install-receipt.test.d.ts.map +1 -0
- package/dist/utils/platform-install-receipt.test.js +74 -0
- package/dist/utils/platform-install-receipt.test.js.map +1 -0
- package/dist/utils/skill-loader.d.ts +0 -9
- package/dist/utils/skill-loader.d.ts.map +1 -1
- package/dist/utils/skill-loader.js +19 -26
- package/dist/utils/skill-loader.js.map +1 -1
- package/dist/utils/workspace.d.ts +28 -0
- package/dist/utils/workspace.d.ts.map +1 -0
- package/dist/utils/workspace.js +103 -0
- package/dist/utils/workspace.js.map +1 -0
- package/dist/utils/workspace.test.d.ts +2 -0
- package/dist/utils/workspace.test.d.ts.map +1 -0
- package/dist/utils/workspace.test.js +50 -0
- package/dist/utils/workspace.test.js.map +1 -0
- package/package.json +48 -36
- package/vendor/node_modules/@zmice/platform-core/dist/index.d.ts +72 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.d.ts.map +1 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.js +105 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.js.map +1 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.test.d.ts +2 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.test.d.ts.map +1 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.test.js +104 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -0
- package/vendor/node_modules/@zmice/platform-core/package.json +34 -0
- package/vendor/packages/platform-codex/dist/generate.d.ts +2 -0
- package/vendor/packages/platform-codex/dist/generate.d.ts.map +1 -0
- package/vendor/packages/platform-codex/dist/generate.js +2 -0
- package/vendor/packages/platform-codex/dist/generate.js.map +1 -0
- package/vendor/packages/platform-codex/dist/index.d.ts +15 -0
- package/vendor/packages/platform-codex/dist/index.d.ts.map +1 -0
- package/vendor/packages/platform-codex/dist/index.js +46 -0
- package/vendor/packages/platform-codex/dist/index.js.map +1 -0
- package/vendor/packages/platform-codex/dist/index.test.d.ts +2 -0
- package/vendor/packages/platform-codex/dist/index.test.d.ts.map +1 -0
- package/vendor/packages/platform-codex/dist/index.test.js +38 -0
- package/vendor/packages/platform-codex/dist/index.test.js.map +1 -0
- package/vendor/packages/platform-codex/dist/install.d.ts +2 -0
- package/vendor/packages/platform-codex/dist/install.d.ts.map +1 -0
- package/vendor/packages/platform-codex/dist/install.js +2 -0
- package/vendor/packages/platform-codex/dist/install.js.map +1 -0
- package/vendor/packages/platform-codex/package.json +46 -0
- package/vendor/packages/platform-codex/templates/AGENTS.md +7 -0
- package/vendor/packages/platform-qoder/dist/generate.d.ts +2 -0
- package/vendor/packages/platform-qoder/dist/generate.d.ts.map +1 -0
- package/vendor/packages/platform-qoder/dist/generate.js +2 -0
- package/vendor/packages/platform-qoder/dist/generate.js.map +1 -0
- package/vendor/packages/platform-qoder/dist/index.d.ts +15 -0
- package/vendor/packages/platform-qoder/dist/index.d.ts.map +1 -0
- package/vendor/packages/platform-qoder/dist/index.js +46 -0
- package/vendor/packages/platform-qoder/dist/index.js.map +1 -0
- package/vendor/packages/platform-qoder/dist/index.test.d.ts +2 -0
- package/vendor/packages/platform-qoder/dist/index.test.d.ts.map +1 -0
- package/vendor/packages/platform-qoder/dist/index.test.js +38 -0
- package/vendor/packages/platform-qoder/dist/index.test.js.map +1 -0
- package/vendor/packages/platform-qoder/dist/install.d.ts +2 -0
- package/vendor/packages/platform-qoder/dist/install.d.ts.map +1 -0
- package/vendor/packages/platform-qoder/dist/install.js +2 -0
- package/vendor/packages/platform-qoder/dist/install.js.map +1 -0
- package/vendor/packages/platform-qoder/package.json +46 -0
- package/vendor/packages/platform-qoder/templates/instructions.md +7 -0
- package/vendor/packages/platform-qwen/dist/generate.d.ts +2 -0
- package/vendor/packages/platform-qwen/dist/generate.d.ts.map +1 -0
- package/vendor/packages/platform-qwen/dist/generate.js +2 -0
- package/vendor/packages/platform-qwen/dist/generate.js.map +1 -0
- package/vendor/packages/platform-qwen/dist/index.d.ts +16 -0
- package/vendor/packages/platform-qwen/dist/index.d.ts.map +1 -0
- package/vendor/packages/platform-qwen/dist/index.js +60 -0
- package/vendor/packages/platform-qwen/dist/index.js.map +1 -0
- package/vendor/packages/platform-qwen/dist/index.test.d.ts +2 -0
- package/vendor/packages/platform-qwen/dist/index.test.d.ts.map +1 -0
- package/vendor/packages/platform-qwen/dist/index.test.js +46 -0
- package/vendor/packages/platform-qwen/dist/index.test.js.map +1 -0
- package/vendor/packages/platform-qwen/dist/install.d.ts +2 -0
- package/vendor/packages/platform-qwen/dist/install.d.ts.map +1 -0
- package/vendor/packages/platform-qwen/dist/install.js +2 -0
- package/vendor/packages/platform-qwen/dist/install.js.map +1 -0
- package/vendor/packages/platform-qwen/package.json +46 -0
- package/vendor/packages/platform-qwen/templates/QWEN.md +7 -0
- package/vendor/packages/platform-qwen/templates/qwen-extension.json +7 -0
- package/vendor/packages/toolkit/dist/content-lint.test.d.ts +2 -0
- package/vendor/packages/toolkit/dist/content-lint.test.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/content-lint.test.js +252 -0
- package/vendor/packages/toolkit/dist/content-lint.test.js.map +1 -0
- package/vendor/packages/toolkit/dist/governance/index.d.ts +2 -0
- package/vendor/packages/toolkit/dist/governance/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/governance/index.js +2 -0
- package/vendor/packages/toolkit/dist/governance/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.d.ts +6 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.js +31 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.js.map +1 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.test.d.ts +2 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.test.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.test.js +23 -0
- package/vendor/packages/toolkit/dist/governance/upstreams.test.js.map +1 -0
- package/vendor/packages/toolkit/dist/index.d.ts +8 -0
- package/vendor/packages/toolkit/dist/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/index.js +8 -0
- package/vendor/packages/toolkit/dist/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/lint/content-lint.d.ts +21 -0
- package/vendor/packages/toolkit/dist/lint/content-lint.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/lint/content-lint.js +250 -0
- package/vendor/packages/toolkit/dist/lint/content-lint.js.map +1 -0
- package/vendor/packages/toolkit/dist/lint/index.d.ts +2 -0
- package/vendor/packages/toolkit/dist/lint/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/lint/index.js +2 -0
- package/vendor/packages/toolkit/dist/lint/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/asset-unit.d.ts +4 -0
- package/vendor/packages/toolkit/dist/loaders/asset-unit.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/asset-unit.js +95 -0
- package/vendor/packages/toolkit/dist/loaders/asset-unit.js.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/content-tree.d.ts +2 -0
- package/vendor/packages/toolkit/dist/loaders/content-tree.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/content-tree.js +2 -0
- package/vendor/packages/toolkit/dist/loaders/content-tree.js.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/fs.d.ts +6 -0
- package/vendor/packages/toolkit/dist/loaders/fs.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/fs.js +19 -0
- package/vendor/packages/toolkit/dist/loaders/fs.js.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/index.d.ts +4 -0
- package/vendor/packages/toolkit/dist/loaders/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/index.js +4 -0
- package/vendor/packages/toolkit/dist/loaders/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/simple-yaml.d.ts +2 -0
- package/vendor/packages/toolkit/dist/loaders/simple-yaml.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/loaders/simple-yaml.js +125 -0
- package/vendor/packages/toolkit/dist/loaders/simple-yaml.js.map +1 -0
- package/vendor/packages/toolkit/dist/loaders.test.d.ts +2 -0
- package/vendor/packages/toolkit/dist/loaders.test.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/loaders.test.js +84 -0
- package/vendor/packages/toolkit/dist/loaders.test.js.map +1 -0
- package/vendor/packages/toolkit/dist/manifests/index.d.ts +2 -0
- package/vendor/packages/toolkit/dist/manifests/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/manifests/index.js +2 -0
- package/vendor/packages/toolkit/dist/manifests/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/manifests/toolkit-manifest.d.ts +7 -0
- package/vendor/packages/toolkit/dist/manifests/toolkit-manifest.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/manifests/toolkit-manifest.js +72 -0
- package/vendor/packages/toolkit/dist/manifests/toolkit-manifest.js.map +1 -0
- package/vendor/packages/toolkit/dist/manifests.test.d.ts +2 -0
- package/vendor/packages/toolkit/dist/manifests.test.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/manifests.test.js +75 -0
- package/vendor/packages/toolkit/dist/manifests.test.js.map +1 -0
- package/vendor/packages/toolkit/dist/query/index.d.ts +2 -0
- package/vendor/packages/toolkit/dist/query/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/query/index.js +2 -0
- package/vendor/packages/toolkit/dist/query/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/query/toolkit-query.d.ts +10 -0
- package/vendor/packages/toolkit/dist/query/toolkit-query.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/query/toolkit-query.js +49 -0
- package/vendor/packages/toolkit/dist/query/toolkit-query.js.map +1 -0
- package/vendor/packages/toolkit/dist/query.test.d.ts +2 -0
- package/vendor/packages/toolkit/dist/query.test.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/query.test.js +30 -0
- package/vendor/packages/toolkit/dist/query.test.js.map +1 -0
- package/vendor/packages/toolkit/dist/schema/asset-meta.d.ts +3 -0
- package/vendor/packages/toolkit/dist/schema/asset-meta.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/schema/asset-meta.js +130 -0
- package/vendor/packages/toolkit/dist/schema/asset-meta.js.map +1 -0
- package/vendor/packages/toolkit/dist/schema/asset-unit.d.ts +3 -0
- package/vendor/packages/toolkit/dist/schema/asset-unit.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/schema/asset-unit.js +22 -0
- package/vendor/packages/toolkit/dist/schema/asset-unit.js.map +1 -0
- package/vendor/packages/toolkit/dist/schema/index.d.ts +5 -0
- package/vendor/packages/toolkit/dist/schema/index.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/schema/index.js +5 -0
- package/vendor/packages/toolkit/dist/schema/index.js.map +1 -0
- package/vendor/packages/toolkit/dist/schema/kinds.d.ts +6 -0
- package/vendor/packages/toolkit/dist/schema/kinds.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/schema/kinds.js +24 -0
- package/vendor/packages/toolkit/dist/schema/kinds.js.map +1 -0
- package/vendor/packages/toolkit/dist/schema/manifest.d.ts +3 -0
- package/vendor/packages/toolkit/dist/schema/manifest.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/schema/manifest.js +30 -0
- package/vendor/packages/toolkit/dist/schema/manifest.js.map +1 -0
- package/vendor/packages/toolkit/dist/types.d.ts +80 -0
- package/vendor/packages/toolkit/dist/types.d.ts.map +1 -0
- package/vendor/packages/toolkit/dist/types.js +6 -0
- package/vendor/packages/toolkit/dist/types.js.map +1 -0
- package/vendor/packages/toolkit/package.json +35 -0
- package/vendor/packages/toolkit/src/content/agents/architect/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/architect/body.md +34 -0
- package/vendor/packages/toolkit/src/content/agents/architect/meta.yaml +25 -0
- package/vendor/packages/toolkit/src/content/agents/backend-specialist/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/backend-specialist/body.md +30 -0
- package/vendor/packages/toolkit/src/content/agents/backend-specialist/meta.yaml +24 -0
- package/vendor/packages/toolkit/src/content/agents/code-reviewer/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/code-reviewer/body.md +31 -0
- package/vendor/packages/toolkit/src/content/agents/code-reviewer/meta.yaml +26 -0
- package/vendor/packages/toolkit/src/content/agents/frontend-specialist/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/frontend-specialist/body.md +31 -0
- package/vendor/packages/toolkit/src/content/agents/frontend-specialist/meta.yaml +24 -0
- package/vendor/packages/toolkit/src/content/agents/performance-engineer/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/performance-engineer/body.md +72 -0
- package/vendor/packages/toolkit/src/content/agents/performance-engineer/meta.yaml +24 -0
- package/vendor/packages/toolkit/src/content/agents/product-owner/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/product-owner/body.md +32 -0
- package/vendor/packages/toolkit/src/content/agents/product-owner/meta.yaml +24 -0
- package/vendor/packages/toolkit/src/content/agents/security-auditor/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/security-auditor/body.md +83 -0
- package/vendor/packages/toolkit/src/content/agents/security-auditor/meta.yaml +24 -0
- package/vendor/packages/toolkit/src/content/agents/test-engineer/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/agents/test-engineer/body.md +30 -0
- package/vendor/packages/toolkit/src/content/agents/test-engineer/meta.yaml +28 -0
- package/vendor/packages/toolkit/src/content/commands/api/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/api/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/api/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/build/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/build/body.md +37 -0
- package/vendor/packages/toolkit/src/content/commands/build/meta.yaml +26 -0
- package/vendor/packages/toolkit/src/content/commands/careful/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/careful/body.md +18 -0
- package/vendor/packages/toolkit/src/content/commands/careful/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/commands/ci/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/ci/body.md +27 -0
- package/vendor/packages/toolkit/src/content/commands/ci/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/commit/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/commit/body.md +26 -0
- package/vendor/packages/toolkit/src/content/commands/commit/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/ctx-health/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/ctx-health/body.md +22 -0
- package/vendor/packages/toolkit/src/content/commands/ctx-health/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/debug/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/debug/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/debug/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/doc/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/doc/body.md +23 -0
- package/vendor/packages/toolkit/src/content/commands/doc/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/freeze/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/freeze/body.md +17 -0
- package/vendor/packages/toolkit/src/content/commands/freeze/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/commands/guard/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/guard/body.md +17 -0
- package/vendor/packages/toolkit/src/content/commands/guard/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/commands/idea/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/idea/body.md +23 -0
- package/vendor/packages/toolkit/src/content/commands/idea/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/learn/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/learn/body.md +37 -0
- package/vendor/packages/toolkit/src/content/commands/learn/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/migrate/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/migrate/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/migrate/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/commands/onboard/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/onboard/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/onboard/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/perf/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/perf/body.md +23 -0
- package/vendor/packages/toolkit/src/content/commands/perf/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/plan-review/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/plan-review/body.md +28 -0
- package/vendor/packages/toolkit/src/content/commands/plan-review/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/commands/qa/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/qa/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/qa/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/quality-review/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/quality-review/body.md +38 -0
- package/vendor/packages/toolkit/src/content/commands/quality-review/meta.yaml +22 -0
- package/vendor/packages/toolkit/src/content/commands/retro/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/retro/body.md +25 -0
- package/vendor/packages/toolkit/src/content/commands/retro/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/commands/sdd-tdd/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/sdd-tdd/body.md +39 -0
- package/vendor/packages/toolkit/src/content/commands/sdd-tdd/meta.yaml +23 -0
- package/vendor/packages/toolkit/src/content/commands/secure/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/secure/body.md +23 -0
- package/vendor/packages/toolkit/src/content/commands/secure/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/ship/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/ship/body.md +17 -0
- package/vendor/packages/toolkit/src/content/commands/ship/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/commands/simplify/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/simplify/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/simplify/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/commands/spec/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/spec/body.md +32 -0
- package/vendor/packages/toolkit/src/content/commands/spec/meta.yaml +23 -0
- package/vendor/packages/toolkit/src/content/commands/task-plan/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/task-plan/body.md +32 -0
- package/vendor/packages/toolkit/src/content/commands/task-plan/meta.yaml +23 -0
- package/vendor/packages/toolkit/src/content/commands/ui/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/ui/body.md +24 -0
- package/vendor/packages/toolkit/src/content/commands/ui/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/commands/verify/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/commands/verify/body.md +32 -0
- package/vendor/packages/toolkit/src/content/commands/verify/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/skills/api-and-interface-design/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/api-and-interface-design/body.md +289 -0
- package/vendor/packages/toolkit/src/content/skills/api-and-interface-design/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/brainstorming-and-design/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/brainstorming-and-design/body.md +129 -0
- package/vendor/packages/toolkit/src/content/skills/brainstorming-and-design/meta.yaml +18 -0
- package/vendor/packages/toolkit/src/content/skills/branch-finish-and-cleanup/body.md +155 -0
- package/vendor/packages/toolkit/src/content/skills/branch-finish-and-cleanup/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/browser-qa-testing/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/browser-qa-testing/body.md +554 -0
- package/vendor/packages/toolkit/src/content/skills/browser-qa-testing/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/ci-cd-and-automation/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/ci-cd-and-automation/body.md +417 -0
- package/vendor/packages/toolkit/src/content/skills/ci-cd-and-automation/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/code-review-and-quality/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/code-review-and-quality/body.md +130 -0
- package/vendor/packages/toolkit/src/content/skills/code-review-and-quality/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/code-simplification/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/code-simplification/body.md +326 -0
- package/vendor/packages/toolkit/src/content/skills/code-simplification/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/codebase-onboarding/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/codebase-onboarding/body.md +40 -0
- package/vendor/packages/toolkit/src/content/skills/codebase-onboarding/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/context-budget-audit/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/context-budget-audit/body.md +38 -0
- package/vendor/packages/toolkit/src/content/skills/context-budget-audit/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/context-engineering/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/context-engineering/body.md +55 -0
- package/vendor/packages/toolkit/src/content/skills/context-engineering/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/continuous-learning/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/continuous-learning/body.md +367 -0
- package/vendor/packages/toolkit/src/content/skills/continuous-learning/meta.yaml +18 -0
- package/vendor/packages/toolkit/src/content/skills/debugging-and-error-recovery/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/debugging-and-error-recovery/body.md +43 -0
- package/vendor/packages/toolkit/src/content/skills/debugging-and-error-recovery/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/deprecation-and-migration/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/deprecation-and-migration/body.md +201 -0
- package/vendor/packages/toolkit/src/content/skills/deprecation-and-migration/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/developer-experience-audit/body.md +49 -0
- package/vendor/packages/toolkit/src/content/skills/developer-experience-audit/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/documentation-and-adrs/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/documentation-and-adrs/body.md +61 -0
- package/vendor/packages/toolkit/src/content/skills/documentation-and-adrs/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/engineering-principles/body.md +54 -0
- package/vendor/packages/toolkit/src/content/skills/engineering-principles/meta.yaml +18 -0
- package/vendor/packages/toolkit/src/content/skills/frontend-ui-engineering/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/frontend-ui-engineering/body.md +324 -0
- package/vendor/packages/toolkit/src/content/skills/frontend-ui-engineering/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/git-workflow-and-versioning/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/git-workflow-and-versioning/body.md +319 -0
- package/vendor/packages/toolkit/src/content/skills/git-workflow-and-versioning/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/idea-refine/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/idea-refine/body.md +173 -0
- package/vendor/packages/toolkit/src/content/skills/idea-refine/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/incremental-implementation/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/incremental-implementation/body.md +43 -0
- package/vendor/packages/toolkit/src/content/skills/incremental-implementation/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/multi-perspective-review/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/multi-perspective-review/body.md +52 -0
- package/vendor/packages/toolkit/src/content/skills/multi-perspective-review/meta.yaml +18 -0
- package/vendor/packages/toolkit/src/content/skills/parallel-agent-dispatch/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/parallel-agent-dispatch/body.md +351 -0
- package/vendor/packages/toolkit/src/content/skills/parallel-agent-dispatch/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/skills/performance-optimization/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/performance-optimization/body.md +345 -0
- package/vendor/packages/toolkit/src/content/skills/performance-optimization/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/planning-and-task-breakdown/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/planning-and-task-breakdown/body.md +48 -0
- package/vendor/packages/toolkit/src/content/skills/planning-and-task-breakdown/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/release-documentation-sync/body.md +54 -0
- package/vendor/packages/toolkit/src/content/skills/release-documentation-sync/meta.yaml +15 -0
- package/vendor/packages/toolkit/src/content/skills/review-response-and-resolution/body.md +61 -0
- package/vendor/packages/toolkit/src/content/skills/review-response-and-resolution/meta.yaml +18 -0
- package/vendor/packages/toolkit/src/content/skills/safety-guardrails/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/safety-guardrails/body.md +43 -0
- package/vendor/packages/toolkit/src/content/skills/safety-guardrails/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/sdd-tdd-workflow/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/sdd-tdd-workflow/body.md +371 -0
- package/vendor/packages/toolkit/src/content/skills/sdd-tdd-workflow/meta.yaml +25 -0
- package/vendor/packages/toolkit/src/content/skills/security-and-hardening/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/security-and-hardening/body.md +344 -0
- package/vendor/packages/toolkit/src/content/skills/security-and-hardening/meta.yaml +21 -0
- package/vendor/packages/toolkit/src/content/skills/shipping-and-launch/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/shipping-and-launch/body.md +55 -0
- package/vendor/packages/toolkit/src/content/skills/shipping-and-launch/meta.yaml +22 -0
- package/vendor/packages/toolkit/src/content/skills/source-driven-development/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/source-driven-development/body.md +186 -0
- package/vendor/packages/toolkit/src/content/skills/source-driven-development/meta.yaml +18 -0
- package/vendor/packages/toolkit/src/content/skills/spec-driven-development/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/spec-driven-development/body.md +49 -0
- package/vendor/packages/toolkit/src/content/skills/spec-driven-development/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/sprint-retrospective/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/sprint-retrospective/body.md +336 -0
- package/vendor/packages/toolkit/src/content/skills/sprint-retrospective/meta.yaml +17 -0
- package/vendor/packages/toolkit/src/content/skills/subagent-driven-development/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/subagent-driven-development/body.md +228 -0
- package/vendor/packages/toolkit/src/content/skills/subagent-driven-development/meta.yaml +19 -0
- package/vendor/packages/toolkit/src/content/skills/team-orchestration/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/team-orchestration/body.md +372 -0
- package/vendor/packages/toolkit/src/content/skills/team-orchestration/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/test-driven-development/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/test-driven-development/body.md +374 -0
- package/vendor/packages/toolkit/src/content/skills/test-driven-development/meta.yaml +20 -0
- package/vendor/packages/toolkit/src/content/skills/using-agent-skills/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/using-agent-skills/body.md +169 -0
- package/vendor/packages/toolkit/src/content/skills/using-agent-skills/meta.yaml +23 -0
- package/vendor/packages/toolkit/src/content/skills/verification-before-completion/assets/.gitkeep +0 -0
- package/vendor/packages/toolkit/src/content/skills/verification-before-completion/body.md +68 -0
- package/vendor/packages/toolkit/src/content/skills/verification-before-completion/meta.yaml +20 -0
- package/vendor/packages/toolkit/templates/README.md +12 -0
- package/vendor/packages/toolkit/templates/asset-unit/assets/.gitkeep +1 -0
- package/vendor/packages/toolkit/templates/asset-unit/body.md +3 -0
- package/vendor/packages/toolkit/templates/asset-unit/meta.yaml +6 -0
- package/vendor/references/upstreams.yaml +89 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
# Continuous Learning
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
将开发会话转化为可复用知识。通过 hooks 自动观察工具使用、用户纠正和错误修复模式,提取为原子化的"本能"(instinct),并随时间演化为正式的技能和命令。
|
|
6
|
+
|
|
7
|
+
**核心模式:观察(Observe)→ 提取(Extract)→ 持久化(Persist)→ 演化(Evolve)**
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- 启用自动学习(配置 hooks)
|
|
12
|
+
- 手动触发会话模式提取(`/learn`)
|
|
13
|
+
- 审查和管理已学习的 instincts
|
|
14
|
+
- 将高频 instincts 演化为正式 skills/commands
|
|
15
|
+
- Sprint 回顾时自动触发学习提取(`/retro` 集成)
|
|
16
|
+
|
|
17
|
+
## 架构
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
会话活动(工具调用、用户输入、错误修复)
|
|
21
|
+
│
|
|
22
|
+
│ Hooks 自动捕获(100% 可靠,确定性执行)
|
|
23
|
+
│ PostToolUse / UserPromptSubmit / Stop
|
|
24
|
+
▼
|
|
25
|
+
┌──────────────────────────────────────────────┐
|
|
26
|
+
│ observations.jsonl(本地文件) │
|
|
27
|
+
│ 记录:工具调用、用户纠正、错误解决路径 │
|
|
28
|
+
│ 项目级:projects/<project-hash>/ │
|
|
29
|
+
└──────────────────────────────────────────────┘
|
|
30
|
+
│
|
|
31
|
+
│ /learn 触发模式分析(手动或 Stop hook 提醒)
|
|
32
|
+
▼
|
|
33
|
+
┌──────────────────────────────────────────────┐
|
|
34
|
+
│ 模式检测(Pattern Detection) │
|
|
35
|
+
│ · 用户纠正 → instinct(0.8+) │
|
|
36
|
+
│ · 错误→修复 → instinct(0.6-0.7) │
|
|
37
|
+
│ · 重复工作流 → instinct(0.5-0.6) │
|
|
38
|
+
│ · 项目约定 → instinct(0.4-0.5) │
|
|
39
|
+
└──────────────────────────────────────────────┘
|
|
40
|
+
│
|
|
41
|
+
│ 双层持久化
|
|
42
|
+
▼
|
|
43
|
+
┌──────────────────────────────────────────────┐
|
|
44
|
+
│ 本地文件层 │
|
|
45
|
+
│ instincts/personal/*.yaml(项目或全局) │
|
|
46
|
+
├──────────────────────────────────────────────┤
|
|
47
|
+
│ Agent Memory 层 │
|
|
48
|
+
│ 高置信度 instinct → learned_skill_experience │
|
|
49
|
+
│ 跨会话智能检索,跨项目共享 │
|
|
50
|
+
└──────────────────────────────────────────────┘
|
|
51
|
+
│
|
|
52
|
+
│ /learn evolve — 聚类演化
|
|
53
|
+
▼
|
|
54
|
+
┌──────────────────────────────────────────────┐
|
|
55
|
+
│ 演化产物 │
|
|
56
|
+
│ · skills/*.md(新技能) │
|
|
57
|
+
│ · commands/*.md(新命令) │
|
|
58
|
+
│ · 全局 instinct(多项目出现时自动提升) │
|
|
59
|
+
└──────────────────────────────────────────────┘
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Instinct 模型
|
|
63
|
+
|
|
64
|
+
一个 instinct 是最小的学习单元 — 一个触发条件对应一个行动:
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
---
|
|
68
|
+
id: prefer-named-exports
|
|
69
|
+
trigger: "when creating new TypeScript modules"
|
|
70
|
+
action: "Use named exports instead of default exports"
|
|
71
|
+
confidence: 0.8
|
|
72
|
+
domain: code-style
|
|
73
|
+
scope: project
|
|
74
|
+
project_id: "a1b2c3d4e5f6"
|
|
75
|
+
evidence:
|
|
76
|
+
- "User corrected default export to named export on 2026-04-10"
|
|
77
|
+
- "Observed 4 instances of named export preference in codebase"
|
|
78
|
+
created: "2026-04-10T14:30:00Z"
|
|
79
|
+
updated: "2026-04-12T09:15:00Z"
|
|
80
|
+
---
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Instinct 属性
|
|
84
|
+
|
|
85
|
+
| 属性 | 说明 |
|
|
86
|
+
|------|------|
|
|
87
|
+
| **id** | 唯一标识符,kebab-case |
|
|
88
|
+
| **trigger** | 何时触发此本能 |
|
|
89
|
+
| **action** | 具体要做什么 |
|
|
90
|
+
| **confidence** | 置信度(0.3=试探性,0.6=中等,0.9=近乎确定) |
|
|
91
|
+
| **domain** | 领域标签:code-style / testing / git / debugging / workflow / security / performance |
|
|
92
|
+
| **scope** | 作用域:project(默认)/ global |
|
|
93
|
+
| **project_id** | 项目 hash(scope=project 时) |
|
|
94
|
+
| **evidence** | 支持此 instinct 的观察证据列表 |
|
|
95
|
+
|
|
96
|
+
### 置信度规则
|
|
97
|
+
|
|
98
|
+
| 来源 | 初始置信度 | 增长规则 |
|
|
99
|
+
|------|-----------|---------|
|
|
100
|
+
| 用户纠正 | 0.8 | 每次重复 +0.05,上限 0.95 |
|
|
101
|
+
| 错误→修复路径 | 0.6 | 每次观察到 +0.05 |
|
|
102
|
+
| 重复工作流 | 0.5 | 3+ 次观察后 +0.1 |
|
|
103
|
+
| 项目约定推断 | 0.4 | 需 5+ 次观察确认 |
|
|
104
|
+
|
|
105
|
+
**衰减规则:** 如果后续观察与 instinct 矛盾,置信度 -0.1。置信度 <0.3 的 instinct 自动归档。
|
|
106
|
+
|
|
107
|
+
### 作用域决策
|
|
108
|
+
|
|
109
|
+
| 模式类型 | 作用域 | 示例 |
|
|
110
|
+
|---------|--------|------|
|
|
111
|
+
| 语言/框架约定 | project | "使用 React Hooks"、"遵循 Django REST 模式" |
|
|
112
|
+
| 文件结构偏好 | project | "测试放在 `__tests__/`"、"组件放在 `src/components/`" |
|
|
113
|
+
| 代码风格 | project | "使用函数式风格"、"偏好 dataclasses" |
|
|
114
|
+
| 安全实践 | global | "验证用户输入"、"清理 SQL" |
|
|
115
|
+
| 通用最佳实践 | global | "先写测试"、"始终处理错误" |
|
|
116
|
+
| 工具工作流 | global | "编辑前先搜索"、"写入前先读取" |
|
|
117
|
+
| Git 实践 | global | "约定式提交"、"小而专注的提交" |
|
|
118
|
+
|
|
119
|
+
## Hook 观察层
|
|
120
|
+
|
|
121
|
+
### 工作原理
|
|
122
|
+
|
|
123
|
+
Hooks 是确定性的 — 只要事件触发,脚本就一定执行,不受模型理解偏差影响。与 prompt 指令不同,hooks 提供 100% 可靠的观察能力。
|
|
124
|
+
|
|
125
|
+
### 支持的 Hook 事件
|
|
126
|
+
|
|
127
|
+
**核心事件(Qoder + Qwen Code 均支持):**
|
|
128
|
+
|
|
129
|
+
| Hook 事件 | 用途 | 触发频率 |
|
|
130
|
+
|-----------|------|---------|
|
|
131
|
+
| `PostToolUse` | 记录工具调用模式 | 每次工具调用后 |
|
|
132
|
+
| `UserPromptSubmit` | 捕获用户纠正和偏好 | 每次用户输入后 |
|
|
133
|
+
| `Stop` | 会话结束时触发汇总分析 | 每次 Agent 完成响应 |
|
|
134
|
+
|
|
135
|
+
**扩展事件(仅 Qwen Code):**
|
|
136
|
+
|
|
137
|
+
| Hook 事件 | 用途 |
|
|
138
|
+
|-----------|------|
|
|
139
|
+
| `SessionStart` | 会话开始时加载已有 instincts |
|
|
140
|
+
| `SessionEnd` | 会话结束时执行完整分析 |
|
|
141
|
+
| `SubagentStop` | 子代理完成时记录其行为模式 |
|
|
142
|
+
|
|
143
|
+
### 观察数据格式
|
|
144
|
+
|
|
145
|
+
每条观察记录为一行 JSON(JSONL 格式):
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"timestamp": "2026-04-14T10:30:00Z",
|
|
150
|
+
"session_id": "sess_abc123",
|
|
151
|
+
"event": "PostToolUse",
|
|
152
|
+
"project_id": "a1b2c3d4e5f6",
|
|
153
|
+
"tool_name": "Edit",
|
|
154
|
+
"tool_input_summary": "Modified src/auth/login.ts: added input validation",
|
|
155
|
+
"tool_outcome": "success",
|
|
156
|
+
"context": "User had previously corrected missing validation"
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**存储不存原始数据 — 只存摘要。** 工具输入和输出可能很大,只提取关键信息。
|
|
161
|
+
|
|
162
|
+
### 文件结构
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
~/.qoder/homunculus/
|
|
166
|
+
├── observations.jsonl # 全局观察(无项目时的 fallback)
|
|
167
|
+
├── instincts/
|
|
168
|
+
│ ├── personal/ # 全局自动学习的 instincts
|
|
169
|
+
│ └── inherited/ # 全局导入的 instincts
|
|
170
|
+
├── projects/
|
|
171
|
+
│ ├── a1b2c3d4e5f6/ # 项目 hash(git remote URL)
|
|
172
|
+
│ │ ├── project.json # 项目元数据
|
|
173
|
+
│ │ ├── observations.jsonl # 项目级观察
|
|
174
|
+
│ │ └── instincts/
|
|
175
|
+
│ │ └── personal/ # 项目级 instincts
|
|
176
|
+
│ └── f6e5d4c3b2a1/ # 另一个项目
|
|
177
|
+
│ └── ...
|
|
178
|
+
└── projects.json # 项目注册表:hash → name/path/remote
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 项目检测
|
|
182
|
+
|
|
183
|
+
系统自动检测当前项目:
|
|
184
|
+
|
|
185
|
+
1. `git remote get-url origin` — hash 后生成可移植项目 ID(同仓库不同机器相同 ID)
|
|
186
|
+
2. `git rev-parse --show-toplevel` — 备选,使用仓库路径(机器特定)
|
|
187
|
+
3. 全局 fallback — 无法检测项目时,观察存入全局作用域
|
|
188
|
+
|
|
189
|
+
## Hook 安装
|
|
190
|
+
|
|
191
|
+
### 快速安装
|
|
192
|
+
|
|
193
|
+
运行安装脚本自动配置 hooks:
|
|
194
|
+
|
|
195
|
+
**macOS / Linux:**
|
|
196
|
+
```bash
|
|
197
|
+
# 自动检测平台并安装
|
|
198
|
+
bash skills/continuous-learning/hooks/setup.sh
|
|
199
|
+
|
|
200
|
+
# 指定平台
|
|
201
|
+
bash skills/continuous-learning/hooks/setup.sh --platform qoder
|
|
202
|
+
bash skills/continuous-learning/hooks/setup.sh --platform qwen-code
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Windows (PowerShell 7+):**
|
|
206
|
+
```powershell
|
|
207
|
+
# 自动检测平台并安装
|
|
208
|
+
.\skills\continuous-learning\hooks\setup.ps1
|
|
209
|
+
|
|
210
|
+
# 指定平台
|
|
211
|
+
.\skills\continuous-learning\hooks\setup.ps1 -Platform qoder
|
|
212
|
+
.\skills\continuous-learning\hooks\setup.ps1 -Platform qwen-code
|
|
213
|
+
|
|
214
|
+
# 卸载
|
|
215
|
+
.\skills\continuous-learning\hooks\setup.ps1 -Uninstall
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### 手动配置
|
|
219
|
+
|
|
220
|
+
在 `~/.qoder/settings.json`(Qoder)或对应配置文件中添加:
|
|
221
|
+
|
|
222
|
+
**macOS / Linux:**
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"hooks": {
|
|
226
|
+
"PostToolUse": [{"matcher": "*", "hooks": [{"type": "command", "command": "~/.qoder/hooks/continuous-learning/observe.sh"}]}],
|
|
227
|
+
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "~/.qoder/hooks/continuous-learning/observe.sh"}]}],
|
|
228
|
+
"PostToolUseFailure": [{"matcher": "*", "hooks": [{"type": "command", "command": "~/.qoder/hooks/continuous-learning/observe.sh"}]}],
|
|
229
|
+
"Stop": [{"hooks": [{"type": "command", "command": "~/.qoder/hooks/continuous-learning/session-end.sh"}]}]
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Windows:**
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"hooks": {
|
|
238
|
+
"PostToolUse": [{"matcher": "*", "hooks": [{"type": "command", "command": "pwsh -NoProfile -File \"~/.qoder/hooks/continuous-learning/observe.ps1\""}]}],
|
|
239
|
+
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "pwsh -NoProfile -File \"~/.qoder/hooks/continuous-learning/observe.ps1\""}]}],
|
|
240
|
+
"PostToolUseFailure": [{"matcher": "*", "hooks": [{"type": "command", "command": "pwsh -NoProfile -File \"~/.qoder/hooks/continuous-learning/observe.ps1\""}]}],
|
|
241
|
+
"Stop": [{"hooks": [{"type": "command", "command": "pwsh -NoProfile -File \"~/.qoder/hooks/continuous-learning/session-end.ps1\""}]}]
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
> **依赖要求**: macOS/Linux 版需要 `jq`,Windows 版使用 PowerShell 内置 JSON 处理,无额外依赖。
|
|
247
|
+
|
|
248
|
+
## 模式检测
|
|
249
|
+
|
|
250
|
+
### 检测类型
|
|
251
|
+
|
|
252
|
+
| 模式类型 | 检测方法 | 置信度 |
|
|
253
|
+
|---------|---------|--------|
|
|
254
|
+
| **用户纠正** | UserPromptSubmit 中检测到"不要..."、"改用..."、纠正性指令 | 0.8+ |
|
|
255
|
+
| **错误修复路径** | PostToolUseFailure → 后续成功的工具调用序列 | 0.6-0.7 |
|
|
256
|
+
| **重复工作流** | 同一工具调用序列出现 3+ 次 | 0.5-0.6 |
|
|
257
|
+
| **项目约定** | 代码风格/结构在多文件中保持一致 | 0.4-0.5 |
|
|
258
|
+
| **明确教学** | 用户使用 `/learn save` 手动标记 | 0.9 |
|
|
259
|
+
|
|
260
|
+
### 检测示例
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
观察:用户三次在 Agent 使用 default export 后纠正为 named export
|
|
264
|
+
|
|
265
|
+
提取的 Instinct:
|
|
266
|
+
id: prefer-named-exports
|
|
267
|
+
trigger: "when creating TypeScript modules"
|
|
268
|
+
action: "Use named exports, not default exports"
|
|
269
|
+
confidence: 0.85
|
|
270
|
+
domain: code-style
|
|
271
|
+
scope: project
|
|
272
|
+
evidence:
|
|
273
|
+
- "User corrected default→named export (2026-04-10 session)"
|
|
274
|
+
- "User corrected default→named export (2026-04-11 session)"
|
|
275
|
+
- "User corrected default→named export (2026-04-12 session)"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## 双层持久化
|
|
279
|
+
|
|
280
|
+
### 本地文件层
|
|
281
|
+
|
|
282
|
+
**优势:** 高频写入、低延迟、hooks 直接操作、跨会话持久。
|
|
283
|
+
|
|
284
|
+
- `observations.jsonl` — 原始观察,append-only
|
|
285
|
+
- `instincts/personal/*.yaml` — 提炼后的 instincts
|
|
286
|
+
|
|
287
|
+
### Agent Memory 层
|
|
288
|
+
|
|
289
|
+
**优势:** 智能检索、跨项目共享、会话启动时自动加载。
|
|
290
|
+
|
|
291
|
+
当 instinct 置信度 >= 0.7 时,自动同步到 Agent Memory:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
Memory 存储格式:
|
|
295
|
+
category: learned_skill_experience
|
|
296
|
+
title: "Instinct: [trigger 摘要]"
|
|
297
|
+
content: "[action] — 置信度 [confidence] — 证据: [evidence 摘要]"
|
|
298
|
+
keywords: "[domain], instinct, [project_name]"
|
|
299
|
+
scope: project | global(对应 instinct 的 scope)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 同步策略
|
|
303
|
+
|
|
304
|
+
- **文件 → Memory:** `/learn` 执行时,将高置信度 instincts 写入 Memory
|
|
305
|
+
- **Memory → 文件:** 会话启动时,从 Memory 恢复 instincts(如果本地文件丢失)
|
|
306
|
+
- **去重:** 使用 instinct ID 作为唯一键
|
|
307
|
+
|
|
308
|
+
## 演化路径
|
|
309
|
+
|
|
310
|
+
### Instinct → Skill/Command
|
|
311
|
+
|
|
312
|
+
当一组相关 instincts 满足以下条件时,可以演化为正式 skill 或 command:
|
|
313
|
+
|
|
314
|
+
1. **聚类条件:** 3+ 个相关 instincts,同一 domain
|
|
315
|
+
2. **置信度条件:** 平均置信度 >= 0.7
|
|
316
|
+
3. **覆盖条件:** instincts 覆盖一个完整的工作流或决策领域
|
|
317
|
+
|
|
318
|
+
### 提升规则(Project → Global)
|
|
319
|
+
|
|
320
|
+
当同一 instinct 在 2+ 个项目中出现且平均置信度 >= 0.8 时,自动提升为全局:
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
项目 A: prefer-explicit-errors (0.85)
|
|
324
|
+
项目 B: prefer-explicit-errors (0.80)
|
|
325
|
+
│
|
|
326
|
+
▼
|
|
327
|
+
全局: prefer-explicit-errors (0.83) — 自动提升
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## 命令接口
|
|
331
|
+
|
|
332
|
+
| 命令 | 说明 |
|
|
333
|
+
|------|------|
|
|
334
|
+
| `/learn` | 分析当前会话,提取并展示 instincts |
|
|
335
|
+
| `/learn status` | 显示所有 instincts(项目级 + 全局)及置信度 |
|
|
336
|
+
| `/learn evolve` | 聚类相关 instincts,建议演化为 skill/command |
|
|
337
|
+
| `/learn save [描述]` | 手动创建一个高置信度 instinct |
|
|
338
|
+
| `/learn promote [id]` | 将项目级 instinct 提升为全局 |
|
|
339
|
+
| `/learn export` | 导出 instincts 为文件 |
|
|
340
|
+
| `/learn import [file]` | 从文件导入 instincts |
|
|
341
|
+
|
|
342
|
+
## 与其他技能的衔接
|
|
343
|
+
|
|
344
|
+
- **sprint-retrospective** — Retro 的 Phase 7(Knowledge Capture)自动调用 `/learn` 提取本周期学习
|
|
345
|
+
- **context-engineering** — 会话启动时自动加载相关 instincts 作为上下文
|
|
346
|
+
- **sdd-tdd-workflow** — Phase 5 Reflect 中包含学习提取步骤
|
|
347
|
+
- **verification-before-completion** — 验证过程中发现的模式(常见失败原因)自动记录
|
|
348
|
+
|
|
349
|
+
## Red Flags
|
|
350
|
+
|
|
351
|
+
- Hook 脚本执行时间 > 2 秒(影响 Agent 响应速度)
|
|
352
|
+
- Instincts 数量 > 100 个未清理(信息过载)
|
|
353
|
+
- 相互矛盾的 instincts 同时存在(应合并或归档低置信度的)
|
|
354
|
+
- 全局 instincts 包含项目特定内容(作用域错误)
|
|
355
|
+
- 观察数据无限增长未归档(定期清理 observations.jsonl)
|
|
356
|
+
- 跳过 `/learn` 直接手动创建 Memory(绕过置信度评估)
|
|
357
|
+
|
|
358
|
+
## Verification
|
|
359
|
+
|
|
360
|
+
设置完成后确认:
|
|
361
|
+
|
|
362
|
+
- [ ] Hook 脚本已安装且有执行权限
|
|
363
|
+
- [ ] `~/.qoder/homunculus/` 目录结构已创建
|
|
364
|
+
- [ ] PostToolUse hook 能正常记录观察(检查 observations.jsonl)
|
|
365
|
+
- [ ] `/learn` 命令能正确分析并提取 instincts
|
|
366
|
+
- [ ] 高置信度 instincts 已同步到 Agent Memory
|
|
367
|
+
- [ ] 项目检测正常工作(检查 project.json)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
kind: skill
|
|
2
|
+
name: continuous-learning
|
|
3
|
+
title: 持续学习
|
|
4
|
+
description: 基于 Hook 的持续学习系统。它会观察会话行为,提炼带置信度的原子 instincts,并逐步演化为可复用的 skills 或 commands;同时利用本地文件和 Agent Memory 实现跨会话沉淀,可通过 /learn 手动触发提炼。
|
|
5
|
+
tier: experimental
|
|
6
|
+
audience: advanced
|
|
7
|
+
stability: evolving
|
|
8
|
+
suggests:
|
|
9
|
+
- skill:sprint-retrospective
|
|
10
|
+
- skill:documentation-and-adrs
|
|
11
|
+
platforms:
|
|
12
|
+
- qwen
|
|
13
|
+
- codex
|
|
14
|
+
- qoder
|
|
15
|
+
source:
|
|
16
|
+
upstream: toolkit-original
|
|
17
|
+
strategy: curated
|
|
18
|
+
notes: 本仓库围绕持续学习闭环构建的原生能力。
|
package/vendor/packages/toolkit/src/content/skills/debugging-and-error-recovery/assets/.gitkeep
ADDED
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 调试与恢复
|
|
2
|
+
|
|
3
|
+
## 何时使用
|
|
4
|
+
|
|
5
|
+
- 测试失败、构建报错或运行结果与预期不一致
|
|
6
|
+
- 收到 bug 报告,需要先复现再修复
|
|
7
|
+
- 某个问题开始反复出现,但根因不清楚
|
|
8
|
+
- 你已经开始“凭感觉试错”时
|
|
9
|
+
|
|
10
|
+
## 输入前提
|
|
11
|
+
|
|
12
|
+
- 已保留失败证据:报错、日志、复现步骤或测试输出
|
|
13
|
+
- 愿意暂停继续开发,先处理当前异常
|
|
14
|
+
- 接受先定位根因,再动实现
|
|
15
|
+
|
|
16
|
+
## 执行步骤
|
|
17
|
+
|
|
18
|
+
1. **Stop the line**:停止继续叠加功能,先保留证据
|
|
19
|
+
2. **Reproduce**:让失败稳定复现
|
|
20
|
+
3. **Localize**:缩小到具体层级、文件或步骤
|
|
21
|
+
4. **Reduce**:提炼最小复现用例
|
|
22
|
+
5. **Fix root cause**:修根因,不修症状
|
|
23
|
+
6. **Guard against recurrence**:补回归测试或监控
|
|
24
|
+
7. **Verify**:重新跑验证,确认已恢复
|
|
25
|
+
|
|
26
|
+
## 成功标准
|
|
27
|
+
|
|
28
|
+
- 问题可稳定复现并被最小化描述
|
|
29
|
+
- 修复点对应根因,而不是表面现象
|
|
30
|
+
- 已有测试或验证手段防止同类问题复发
|
|
31
|
+
- 修复后完整验证重新变绿
|
|
32
|
+
|
|
33
|
+
## 相关原则
|
|
34
|
+
|
|
35
|
+
- 停线优先于继续堆功能
|
|
36
|
+
- 先复现,再修复
|
|
37
|
+
- 调试过程必须保留证据链
|
|
38
|
+
|
|
39
|
+
## 与其他技能的衔接
|
|
40
|
+
|
|
41
|
+
- bug 修复时与 `test-driven-development` 的 Prove-It 模式配合
|
|
42
|
+
- 修复完成后交给 `verification-before-completion`
|
|
43
|
+
- 当问题涉及架构性缺陷时,可转给 `architect`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
kind: skill
|
|
2
|
+
name: debugging-and-error-recovery
|
|
3
|
+
title: 调试与恢复
|
|
4
|
+
description: 指导系统化根因调试。适用于测试失败、构建中断、行为与预期不符或出现任何异常时,用结构化方法定位并修复根因,而不是凭直觉试错。
|
|
5
|
+
tier: recommended
|
|
6
|
+
audience: default
|
|
7
|
+
stability: stable
|
|
8
|
+
suggests:
|
|
9
|
+
- skill:test-driven-development
|
|
10
|
+
- skill:verification-before-completion
|
|
11
|
+
platforms:
|
|
12
|
+
- qwen
|
|
13
|
+
- codex
|
|
14
|
+
- qoder
|
|
15
|
+
source:
|
|
16
|
+
upstream: agent-skills
|
|
17
|
+
strategy: adapted
|
|
18
|
+
origin_name: debugging-and-error-recovery
|
|
19
|
+
origin_path: skills/debugging-and-error-recovery/SKILL.md
|
|
20
|
+
origin_id: skill:debugging-and-error-recovery
|
|
21
|
+
notes: 沿用上游调试流程,并对齐本仓库验证要求。
|
|
File without changes
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Deprecation and Migration
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Code is a liability, not an asset. Every line of code has ongoing maintenance cost — bugs to fix, dependencies to update, security patches to apply, and new engineers to onboard. Deprecation is the discipline of removing code that no longer earns its keep, and migration is the process of moving users safely from the old to the new.
|
|
6
|
+
|
|
7
|
+
Most engineering organizations are good at building things. Few are good at removing them. This skill addresses that gap.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- Replacing an old system, API, or library with a new one
|
|
12
|
+
- Sunsetting a feature that's no longer needed
|
|
13
|
+
- Consolidating duplicate implementations
|
|
14
|
+
- Removing dead code that nobody owns but everybody depends on
|
|
15
|
+
- Planning the lifecycle of a new system (deprecation planning starts at design time)
|
|
16
|
+
- Deciding whether to maintain a legacy system or invest in migration
|
|
17
|
+
|
|
18
|
+
## Core Principles
|
|
19
|
+
|
|
20
|
+
### Code Is a Liability
|
|
21
|
+
|
|
22
|
+
Every line of code has ongoing cost: it needs tests, documentation, security patches, dependency updates, and mental overhead for anyone working nearby. The value of code is the functionality it provides, not the code itself. When the same functionality can be provided with less code, less complexity, or better abstractions — the old code should go.
|
|
23
|
+
|
|
24
|
+
### Hyrum's Law Makes Removal Hard
|
|
25
|
+
|
|
26
|
+
With enough users, every observable behavior becomes depended on — including bugs, timing quirks, and undocumented side effects. This is why deprecation requires active migration, not just announcement. Users can't "just switch" when they depend on behaviors the replacement doesn't replicate.
|
|
27
|
+
|
|
28
|
+
### Deprecation Planning Starts at Design Time
|
|
29
|
+
|
|
30
|
+
When building something new, ask: "How would we remove this in 3 years?" Systems designed with clean interfaces, feature flags, and minimal surface area are easier to deprecate than systems that leak implementation details everywhere.
|
|
31
|
+
|
|
32
|
+
## The Deprecation Decision
|
|
33
|
+
|
|
34
|
+
Before deprecating anything, answer these questions:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
1. Does this system still provide unique value?
|
|
38
|
+
→ If yes, maintain it. If no, proceed.
|
|
39
|
+
|
|
40
|
+
2. How many users/consumers depend on it?
|
|
41
|
+
→ Quantify the migration scope.
|
|
42
|
+
|
|
43
|
+
3. Does a replacement exist?
|
|
44
|
+
→ If no, build the replacement first. Don't deprecate without an alternative.
|
|
45
|
+
|
|
46
|
+
4. What's the migration cost for each consumer?
|
|
47
|
+
→ If trivially automated, do it. If manual and high-effort, weigh against maintenance cost.
|
|
48
|
+
|
|
49
|
+
5. What's the ongoing maintenance cost of NOT deprecating?
|
|
50
|
+
→ Security risk, engineer time, opportunity cost of complexity.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Compulsory vs Advisory Deprecation
|
|
54
|
+
|
|
55
|
+
| Type | When to Use | Mechanism |
|
|
56
|
+
|------|-------------|-----------|
|
|
57
|
+
| **Advisory** | Migration is optional, old system is stable | Warnings, documentation, nudges. Users migrate on their own timeline. |
|
|
58
|
+
| **Compulsory** | Old system has security issues, blocks progress, or maintenance cost is unsustainable | Hard deadline. Old system will be removed by date X. Provide migration tooling. |
|
|
59
|
+
|
|
60
|
+
**Default to advisory.** Use compulsory only when the maintenance cost or risk justifies forcing migration. Compulsory deprecation requires providing migration tooling, documentation, and support — you can't just announce a deadline.
|
|
61
|
+
|
|
62
|
+
## The Migration Process
|
|
63
|
+
|
|
64
|
+
### Step 1: Build the Replacement
|
|
65
|
+
|
|
66
|
+
Don't deprecate without a working alternative. The replacement must:
|
|
67
|
+
|
|
68
|
+
- Cover all critical use cases of the old system
|
|
69
|
+
- Have documentation and migration guides
|
|
70
|
+
- Be proven in production (not just "theoretically better")
|
|
71
|
+
|
|
72
|
+
### Step 2: Announce and Document
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
## Deprecation Notice: OldService
|
|
76
|
+
|
|
77
|
+
**Status:** Deprecated as of 2025-03-01
|
|
78
|
+
**Replacement:** NewService (see migration guide below)
|
|
79
|
+
**Removal date:** Advisory — no hard deadline yet
|
|
80
|
+
**Reason:** OldService requires manual scaling and lacks observability.
|
|
81
|
+
NewService handles both automatically.
|
|
82
|
+
|
|
83
|
+
### Migration Guide
|
|
84
|
+
1. Replace `import { client } from 'old-service'` with `import { client } from 'new-service'`
|
|
85
|
+
2. Update configuration (see examples below)
|
|
86
|
+
3. Run the migration verification script: `npx migrate-check`
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Step 3: Migrate Incrementally
|
|
90
|
+
|
|
91
|
+
Migrate consumers one at a time, not all at once. For each consumer:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
1. Identify all touchpoints with the deprecated system
|
|
95
|
+
2. Update to use the replacement
|
|
96
|
+
3. Verify behavior matches (tests, integration checks)
|
|
97
|
+
4. Remove references to the old system
|
|
98
|
+
5. Confirm no regressions
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**The Churn Rule:** If you own the infrastructure being deprecated, you are responsible for migrating your users — or providing backward-compatible updates that require no migration. Don't announce deprecation and leave users to figure it out.
|
|
102
|
+
|
|
103
|
+
### Step 4: Remove the Old System
|
|
104
|
+
|
|
105
|
+
Only after all consumers have migrated:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
1. Verify zero active usage (metrics, logs, dependency analysis)
|
|
109
|
+
2. Remove the code
|
|
110
|
+
3. Remove associated tests, documentation, and configuration
|
|
111
|
+
4. Remove the deprecation notices
|
|
112
|
+
5. Celebrate — removing code is an achievement
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Migration Patterns
|
|
116
|
+
|
|
117
|
+
### Strangler Pattern
|
|
118
|
+
|
|
119
|
+
Run old and new systems in parallel. Route traffic incrementally from old to new. When the old system handles 0% of traffic, remove it.
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Phase 1: New system handles 0%, old handles 100%
|
|
123
|
+
Phase 2: New system handles 10% (canary)
|
|
124
|
+
Phase 3: New system handles 50%
|
|
125
|
+
Phase 4: New system handles 100%, old system idle
|
|
126
|
+
Phase 5: Remove old system
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Adapter Pattern
|
|
130
|
+
|
|
131
|
+
Create an adapter that translates calls from the old interface to the new implementation. Consumers keep using the old interface while you migrate the backend.
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
// Adapter: old interface, new implementation
|
|
135
|
+
class LegacyTaskService implements OldTaskAPI {
|
|
136
|
+
constructor(private newService: NewTaskService) {}
|
|
137
|
+
|
|
138
|
+
// Old method signature, delegates to new implementation
|
|
139
|
+
getTask(id: number): OldTask {
|
|
140
|
+
const task = this.newService.findById(String(id));
|
|
141
|
+
return this.toOldFormat(task);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Feature Flag Migration
|
|
147
|
+
|
|
148
|
+
Use feature flags to switch consumers from old to new system one at a time:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
function getTaskService(userId: string): TaskService {
|
|
152
|
+
if (featureFlags.isEnabled('new-task-service', { userId })) {
|
|
153
|
+
return new NewTaskService();
|
|
154
|
+
}
|
|
155
|
+
return new LegacyTaskService();
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Zombie Code
|
|
160
|
+
|
|
161
|
+
Zombie code is code that nobody owns but everybody depends on. It's not actively maintained, has no clear owner, and accumulates security vulnerabilities and compatibility issues. Signs:
|
|
162
|
+
|
|
163
|
+
- No commits in 6+ months but active consumers exist
|
|
164
|
+
- No assigned maintainer or team
|
|
165
|
+
- Failing tests that nobody fixes
|
|
166
|
+
- Dependencies with known vulnerabilities that nobody updates
|
|
167
|
+
- Documentation that references systems that no longer exist
|
|
168
|
+
|
|
169
|
+
**Response:** Either assign an owner and maintain it properly, or deprecate it with a concrete migration plan. Zombie code cannot stay in limbo — it either gets investment or removal.
|
|
170
|
+
|
|
171
|
+
## Common Rationalizations
|
|
172
|
+
|
|
173
|
+
| Rationalization | Reality |
|
|
174
|
+
|---|---|
|
|
175
|
+
| "It still works, why remove it?" | Working code that nobody maintains accumulates security debt and complexity. Maintenance cost grows silently. |
|
|
176
|
+
| "Someone might need it later" | If it's needed later, it can be rebuilt. Keeping unused code "just in case" costs more than rebuilding. |
|
|
177
|
+
| "The migration is too expensive" | Compare migration cost to ongoing maintenance cost over 2-3 years. Migration is usually cheaper long-term. |
|
|
178
|
+
| "We'll deprecate it after we finish the new system" | Deprecation planning starts at design time. By the time the new system is done, you'll have new priorities. Plan now. |
|
|
179
|
+
| "Users will migrate on their own" | They won't. Provide tooling, documentation, and incentives — or do the migration yourself (the Churn Rule). |
|
|
180
|
+
| "We can maintain both systems indefinitely" | Two systems doing the same thing is double the maintenance, testing, documentation, and onboarding cost. |
|
|
181
|
+
|
|
182
|
+
## Red Flags
|
|
183
|
+
|
|
184
|
+
- Deprecated systems with no replacement available
|
|
185
|
+
- Deprecation announcements with no migration tooling or documentation
|
|
186
|
+
- "Soft" deprecation that's been advisory for years with no progress
|
|
187
|
+
- Zombie code with no owner and active consumers
|
|
188
|
+
- New features added to a deprecated system (invest in the replacement instead)
|
|
189
|
+
- Deprecation without measuring current usage
|
|
190
|
+
- Removing code without verifying zero active consumers
|
|
191
|
+
|
|
192
|
+
## Verification
|
|
193
|
+
|
|
194
|
+
After completing a deprecation:
|
|
195
|
+
|
|
196
|
+
- [ ] Replacement is production-proven and covers all critical use cases
|
|
197
|
+
- [ ] Migration guide exists with concrete steps and examples
|
|
198
|
+
- [ ] All active consumers have been migrated (verified by metrics/logs)
|
|
199
|
+
- [ ] Old code, tests, documentation, and configuration are fully removed
|
|
200
|
+
- [ ] No references to the deprecated system remain in the codebase
|
|
201
|
+
- [ ] Deprecation notices are removed (they served their purpose)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
kind: skill
|
|
2
|
+
name: deprecation-and-migration
|
|
3
|
+
title: 迁移与废弃
|
|
4
|
+
description: 管理废弃与迁移。适用于移除旧系统、旧 API 或旧功能,也适用于在不同实现之间平滑迁移用户并决定是否继续维护旧路径。
|
|
5
|
+
tier: recommended
|
|
6
|
+
audience: advanced
|
|
7
|
+
stability: stable
|
|
8
|
+
suggests:
|
|
9
|
+
- skill:documentation-and-adrs
|
|
10
|
+
- skill:verification-before-completion
|
|
11
|
+
platforms:
|
|
12
|
+
- qwen
|
|
13
|
+
- codex
|
|
14
|
+
- qoder
|
|
15
|
+
source:
|
|
16
|
+
upstream: agent-skills
|
|
17
|
+
strategy: adapted
|
|
18
|
+
origin_name: deprecation-and-migration
|
|
19
|
+
origin_path: skills/deprecation-and-migration/SKILL.md
|
|
20
|
+
origin_id: skill:deprecation-and-migration
|
|
21
|
+
notes: 基于上游迁移废弃实践整理。
|