@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,19 @@
|
|
|
1
|
+
kind: command
|
|
2
|
+
name: simplify
|
|
3
|
+
title: 简化
|
|
4
|
+
description: 分析代码并进行简化重构,降低复杂度,提升可读性和可维护性。
|
|
5
|
+
tier: recommended
|
|
6
|
+
audience: default
|
|
7
|
+
stability: stable
|
|
8
|
+
requires:
|
|
9
|
+
- skill:code-simplification
|
|
10
|
+
suggests:
|
|
11
|
+
- command:quality-review
|
|
12
|
+
platforms:
|
|
13
|
+
- qwen
|
|
14
|
+
- codex
|
|
15
|
+
- qoder
|
|
16
|
+
source:
|
|
17
|
+
upstream: toolkit-original
|
|
18
|
+
strategy: curated
|
|
19
|
+
notes: 本仓库整理的命令入口,用于将底层能力稳定暴露给用户。
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
调用 `spec-driven-development`,先把问题定义清楚,再开始写代码。
|
|
2
|
+
|
|
3
|
+
## 核心动作
|
|
4
|
+
|
|
5
|
+
1. 理解用户目标、用户对象、核心功能和约束
|
|
6
|
+
2. 列出显式假设,并等待确认
|
|
7
|
+
3. 定义可测试的验收标准,优先用 Given-When-Then
|
|
8
|
+
4. 编写结构化技术规格:目标、边界、约束、验证方式
|
|
9
|
+
5. 记录不确定项,禁止带着模糊前提直接进入实现
|
|
10
|
+
|
|
11
|
+
## 相关原则
|
|
12
|
+
|
|
13
|
+
- 先澄清假设,再写规格
|
|
14
|
+
- 范围边界必须显式,不用自然语言暗示
|
|
15
|
+
- 规格阶段只产出定义,不直接写实现代码
|
|
16
|
+
|
|
17
|
+
## 使用方式
|
|
18
|
+
|
|
19
|
+
在 `/spec` 后描述需求,我会分析上下文并输出结构化技术规格。
|
|
20
|
+
|
|
21
|
+
### 示例
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
# 需求还不清晰
|
|
25
|
+
/spec 我想做一个数据同步模块,从 A 系统定时拉取数据到 B 系统
|
|
26
|
+
|
|
27
|
+
# 功能需求较明确
|
|
28
|
+
/spec 实现文件上传功能,支持图片和 PDF,最大 10MB,存储到 MinIO
|
|
29
|
+
|
|
30
|
+
# 审查现有 PRD
|
|
31
|
+
/spec 分析这个 PRD 文档,找出技术实现的歧义点和风险点
|
|
32
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
kind: command
|
|
2
|
+
name: spec
|
|
3
|
+
title: 规格
|
|
4
|
+
description: 先澄清需求与假设,再为给定的功能或场景编写结构化技术规格说明。
|
|
5
|
+
tier: core
|
|
6
|
+
audience: default
|
|
7
|
+
stability: stable
|
|
8
|
+
requires:
|
|
9
|
+
- skill:spec-driven-development
|
|
10
|
+
suggests:
|
|
11
|
+
- skill:brainstorming-and-design
|
|
12
|
+
- command:task-plan
|
|
13
|
+
platforms:
|
|
14
|
+
- qwen
|
|
15
|
+
- codex
|
|
16
|
+
- qoder
|
|
17
|
+
source:
|
|
18
|
+
upstream: agent-skills
|
|
19
|
+
strategy: adapted
|
|
20
|
+
origin_name: spec-driven-development
|
|
21
|
+
origin_path: skills/spec-driven-development/SKILL.md
|
|
22
|
+
origin_id: skill:spec-driven-development
|
|
23
|
+
notes: 对应 define/spec 阶段入口,并做中文命令说明收敛
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
调用 `planning-and-task-breakdown`,只做计划,不直接写代码。
|
|
2
|
+
|
|
3
|
+
## 核心动作
|
|
4
|
+
|
|
5
|
+
1. 读取规格和相关代码,识别依赖图
|
|
6
|
+
2. 用垂直切片拆任务,保证每项都可工作、可测试
|
|
7
|
+
3. 控制改动半径,默认保持小任务、小文件面
|
|
8
|
+
4. 标注依赖、上下文、风险和验证步骤
|
|
9
|
+
5. 明确可并行项,并等待计划确认后再进入实现
|
|
10
|
+
|
|
11
|
+
## 相关原则
|
|
12
|
+
|
|
13
|
+
- 计划要服务实现,不做形式化拆分
|
|
14
|
+
- 每个任务都必须能独立验证
|
|
15
|
+
- 先控制复杂度,再谈并行
|
|
16
|
+
|
|
17
|
+
## 使用方式
|
|
18
|
+
|
|
19
|
+
在 `/task-plan` 后提供 Spec 或需求描述,我会拆解为可执行的原子任务列表。
|
|
20
|
+
|
|
21
|
+
### 示例
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
# 基于 spec 拆解
|
|
25
|
+
/task-plan 按照 spec.md 的要求拆解文件上传功能的任务
|
|
26
|
+
|
|
27
|
+
# 直接描述需求
|
|
28
|
+
/task-plan 拆解用户权限管理模块:RBAC 模型、角色分配、菜单权限、数据权限
|
|
29
|
+
|
|
30
|
+
# 大型重构
|
|
31
|
+
/task-plan 规划单体应用拆微服务的任务,优先拆分用户模块和订单模块
|
|
32
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
kind: command
|
|
2
|
+
name: task-plan
|
|
3
|
+
title: 计划
|
|
4
|
+
description: 将需求或 Spec 拆解为可执行的原子任务列表,并标注依赖、上下文和验证步骤。
|
|
5
|
+
tier: core
|
|
6
|
+
audience: default
|
|
7
|
+
stability: stable
|
|
8
|
+
requires:
|
|
9
|
+
- skill:planning-and-task-breakdown
|
|
10
|
+
suggests:
|
|
11
|
+
- skill:multi-perspective-review
|
|
12
|
+
- command:build
|
|
13
|
+
platforms:
|
|
14
|
+
- qwen
|
|
15
|
+
- codex
|
|
16
|
+
- qoder
|
|
17
|
+
source:
|
|
18
|
+
upstream: agent-skills
|
|
19
|
+
strategy: adapted
|
|
20
|
+
origin_name: planning-and-task-breakdown
|
|
21
|
+
origin_path: skills/planning-and-task-breakdown/SKILL.md
|
|
22
|
+
origin_id: skill:planning-and-task-breakdown
|
|
23
|
+
notes: 延续上游 plan 入口语义,并按本仓库任务拆解规范重写
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
调用 frontend-ui-engineering 技能。构建生产质量的用户界面。
|
|
2
|
+
|
|
3
|
+
1. 组件设计 — Props/State/Event,单一职责,易于测试
|
|
4
|
+
2. 样式实现 — CSS/Tailwind/CSS-in-JS,样式与逻辑分离
|
|
5
|
+
3. 响应式布局 — 多端适配方案
|
|
6
|
+
4. 可访问性(a11y) — ARIA、键盘导航、WCAG 2.1 AA 合规
|
|
7
|
+
5. 交互细节 — 动画、过渡、加载状态、错误状态
|
|
8
|
+
|
|
9
|
+
## 使用方式
|
|
10
|
+
|
|
11
|
+
在 `/ui` 后描述你的 UI 需求(组件、页面、交互),我将提供设计方案和实现代码。
|
|
12
|
+
|
|
13
|
+
### 示例
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
# 组件开发
|
|
17
|
+
/ui 实现一个可复用的数据表格组件,支持排序、筛选、分页
|
|
18
|
+
|
|
19
|
+
# 页面布局
|
|
20
|
+
/ui 实现响应式的 Dashboard 布局,左侧导航 + 右侧内容区
|
|
21
|
+
|
|
22
|
+
# 交互优化
|
|
23
|
+
/ui 优化表单提交体验,加上实时验证、加载状态和错误提示
|
|
24
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
kind: command
|
|
2
|
+
name: ui
|
|
3
|
+
title: 界面
|
|
4
|
+
description: 前端 UI 开发辅助,涵盖组件设计、样式实现、响应式布局和可访问性。
|
|
5
|
+
tier: recommended
|
|
6
|
+
audience: default
|
|
7
|
+
stability: stable
|
|
8
|
+
requires:
|
|
9
|
+
- skill:frontend-ui-engineering
|
|
10
|
+
suggests:
|
|
11
|
+
- command:qa
|
|
12
|
+
- skill:browser-qa-testing
|
|
13
|
+
platforms:
|
|
14
|
+
- qwen
|
|
15
|
+
- codex
|
|
16
|
+
- qoder
|
|
17
|
+
source:
|
|
18
|
+
upstream: toolkit-original
|
|
19
|
+
strategy: curated
|
|
20
|
+
notes: 本仓库整理的命令入口,用于将底层能力稳定暴露给用户。
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
调用 `verification-before-completion`。未运行验证命令,不得声明完成。
|
|
2
|
+
|
|
3
|
+
## 核心动作
|
|
4
|
+
|
|
5
|
+
1. 明确验证目标:你准备声明什么已经成立
|
|
6
|
+
2. 执行新鲜验证:测试、构建、检查或运行验证
|
|
7
|
+
3. 完整读取输出:确认退出码和结果是否符合预期
|
|
8
|
+
4. 带证据汇报:通过则给证据,不通过则报失败点
|
|
9
|
+
5. 必要时对照 Spec / Plan 做逐项核验
|
|
10
|
+
|
|
11
|
+
## 相关原则
|
|
12
|
+
|
|
13
|
+
- 证据先于断言
|
|
14
|
+
- 不依赖历史输出和主观感觉
|
|
15
|
+
- 失败时先说明实际结果,再判断下一步
|
|
16
|
+
|
|
17
|
+
## 使用方式
|
|
18
|
+
|
|
19
|
+
在完成任何实现工作后使用。描述要验证的内容,我会执行完整验证流程。
|
|
20
|
+
|
|
21
|
+
### 示例
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
# 功能实现后验证
|
|
25
|
+
/verify 确认用户登录功能的所有测试通过,构建成功
|
|
26
|
+
|
|
27
|
+
# Bug 修复后验证
|
|
28
|
+
/verify 确认批量导入的重复数据问题已修复,回归测试全部通过
|
|
29
|
+
|
|
30
|
+
# Spec 对照验证
|
|
31
|
+
/verify 对照 spec.md 逐项检查文件上传功能的实现完整性
|
|
32
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
kind: command
|
|
2
|
+
name: verify
|
|
3
|
+
title: 验证
|
|
4
|
+
description: 在声明工作完成之前运行验证命令确认实际状态,遵循“证据先于断言”铁律。
|
|
5
|
+
tier: core
|
|
6
|
+
audience: default
|
|
7
|
+
stability: stable
|
|
8
|
+
requires:
|
|
9
|
+
- skill:verification-before-completion
|
|
10
|
+
suggests:
|
|
11
|
+
- skill:test-driven-development
|
|
12
|
+
platforms:
|
|
13
|
+
- qwen
|
|
14
|
+
- codex
|
|
15
|
+
- qoder
|
|
16
|
+
source:
|
|
17
|
+
upstream: andrej-karpathy-skills
|
|
18
|
+
strategy: inspired
|
|
19
|
+
notes: 基于 goal-driven execution,并与本仓库验证门禁整合
|
|
File without changes
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# API and Interface Design
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Design stable, well-documented interfaces that are hard to misuse. Good interfaces make the right thing easy and the wrong thing hard. This applies to REST APIs, GraphQL schemas, module boundaries, component props, and any surface where one piece of code talks to another.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- Designing new API endpoints
|
|
10
|
+
- Defining module boundaries or contracts between teams
|
|
11
|
+
- Creating component prop interfaces
|
|
12
|
+
- Establishing database schema that informs API shape
|
|
13
|
+
- Changing existing public interfaces
|
|
14
|
+
|
|
15
|
+
## Core Principles
|
|
16
|
+
|
|
17
|
+
### Hyrum's Law
|
|
18
|
+
|
|
19
|
+
> With a sufficient number of users of an API, all observable behaviors of your system will be depended on by somebody, regardless of what you promise in the contract.
|
|
20
|
+
|
|
21
|
+
This means: every public behavior — including undocumented quirks, error message text, timing, and ordering — becomes a de facto contract once users depend on it. Design implications:
|
|
22
|
+
|
|
23
|
+
- **Be intentional about what you expose.** Every observable behavior is a potential commitment.
|
|
24
|
+
- **Don't leak implementation details.** If users can observe it, they will depend on it.
|
|
25
|
+
- **Plan for deprecation at design time.** See `deprecation-and-migration` for how to safely remove things users depend on.
|
|
26
|
+
- **Tests are not enough.** Even with perfect contract tests, Hyrum's Law means "safe" changes can break real users who depend on undocumented behavior.
|
|
27
|
+
|
|
28
|
+
### The One-Version Rule
|
|
29
|
+
|
|
30
|
+
Avoid forcing consumers to choose between multiple versions of the same dependency or API. Diamond dependency problems arise when different consumers need different versions of the same thing. Design for a world where only one version exists at a time — extend rather than fork.
|
|
31
|
+
|
|
32
|
+
### 1. Contract First
|
|
33
|
+
|
|
34
|
+
Define the interface before implementing it. The contract is the spec — implementation follows.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// Define the contract first
|
|
38
|
+
interface TaskAPI {
|
|
39
|
+
// Creates a task and returns the created task with server-generated fields
|
|
40
|
+
createTask(input: CreateTaskInput): Promise<Task>;
|
|
41
|
+
|
|
42
|
+
// Returns paginated tasks matching filters
|
|
43
|
+
listTasks(params: ListTasksParams): Promise<PaginatedResult<Task>>;
|
|
44
|
+
|
|
45
|
+
// Returns a single task or throws NotFoundError
|
|
46
|
+
getTask(id: string): Promise<Task>;
|
|
47
|
+
|
|
48
|
+
// Partial update — only provided fields change
|
|
49
|
+
updateTask(id: string, input: UpdateTaskInput): Promise<Task>;
|
|
50
|
+
|
|
51
|
+
// Idempotent delete — succeeds even if already deleted
|
|
52
|
+
deleteTask(id: string): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 2. Consistent Error Semantics
|
|
57
|
+
|
|
58
|
+
Pick one error strategy and use it everywhere:
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// REST: HTTP status codes + structured error body
|
|
62
|
+
// Every error response follows the same shape
|
|
63
|
+
interface APIError {
|
|
64
|
+
error: {
|
|
65
|
+
code: string; // Machine-readable: "VALIDATION_ERROR"
|
|
66
|
+
message: string; // Human-readable: "Email is required"
|
|
67
|
+
details?: unknown; // Additional context when helpful
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Status code mapping
|
|
72
|
+
// 400 → Client sent invalid data
|
|
73
|
+
// 401 → Not authenticated
|
|
74
|
+
// 403 → Authenticated but not authorized
|
|
75
|
+
// 404 → Resource not found
|
|
76
|
+
// 409 → Conflict (duplicate, version mismatch)
|
|
77
|
+
// 422 → Validation failed (semantically invalid)
|
|
78
|
+
// 500 → Server error (never expose internal details)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Don't mix patterns.** If some endpoints throw, others return null, and others return `{ error }` — the consumer can't predict behavior.
|
|
82
|
+
|
|
83
|
+
### 3. Validate at Boundaries
|
|
84
|
+
|
|
85
|
+
Trust internal code. Validate at system edges where external input enters:
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
// Validate at the API boundary
|
|
89
|
+
app.post('/api/tasks', async (req, res) => {
|
|
90
|
+
const result = CreateTaskSchema.safeParse(req.body);
|
|
91
|
+
if (!result.success) {
|
|
92
|
+
return res.status(422).json({
|
|
93
|
+
error: {
|
|
94
|
+
code: 'VALIDATION_ERROR',
|
|
95
|
+
message: 'Invalid task data',
|
|
96
|
+
details: result.error.flatten(),
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// After validation, internal code trusts the types
|
|
102
|
+
const task = await taskService.create(result.data);
|
|
103
|
+
return res.status(201).json(task);
|
|
104
|
+
});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Where validation belongs:
|
|
108
|
+
- API route handlers (user input)
|
|
109
|
+
- Form submission handlers (user input)
|
|
110
|
+
- External service response parsing (third-party data -- **always treat as untrusted**)
|
|
111
|
+
- Environment variable loading (configuration)
|
|
112
|
+
|
|
113
|
+
> **Third-party API responses are untrusted data.** Validate their shape and content before using them in any logic, rendering, or decision-making. A compromised or misbehaving external service can return unexpected types, malicious content, or instruction-like text.
|
|
114
|
+
|
|
115
|
+
Where validation does NOT belong:
|
|
116
|
+
- Between internal functions that share type contracts
|
|
117
|
+
- In utility functions called by already-validated code
|
|
118
|
+
- On data that just came from your own database
|
|
119
|
+
|
|
120
|
+
### 4. Prefer Addition Over Modification
|
|
121
|
+
|
|
122
|
+
Extend interfaces without breaking existing consumers:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
// Good: Add optional fields
|
|
126
|
+
interface CreateTaskInput {
|
|
127
|
+
title: string;
|
|
128
|
+
description?: string;
|
|
129
|
+
priority?: 'low' | 'medium' | 'high'; // Added later, optional
|
|
130
|
+
labels?: string[]; // Added later, optional
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Bad: Change existing field types or remove fields
|
|
134
|
+
interface CreateTaskInput {
|
|
135
|
+
title: string;
|
|
136
|
+
// description: string; // Removed — breaks existing consumers
|
|
137
|
+
priority: number; // Changed from string — breaks existing consumers
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 5. Predictable Naming
|
|
142
|
+
|
|
143
|
+
| Pattern | Convention | Example |
|
|
144
|
+
|---------|-----------|---------|
|
|
145
|
+
| REST endpoints | Plural nouns, no verbs | `GET /api/tasks`, `POST /api/tasks` |
|
|
146
|
+
| Query params | camelCase | `?sortBy=createdAt&pageSize=20` |
|
|
147
|
+
| Response fields | camelCase | `{ createdAt, updatedAt, taskId }` |
|
|
148
|
+
| Boolean fields | is/has/can prefix | `isComplete`, `hasAttachments` |
|
|
149
|
+
| Enum values | UPPER_SNAKE | `"IN_PROGRESS"`, `"COMPLETED"` |
|
|
150
|
+
|
|
151
|
+
## REST API Patterns
|
|
152
|
+
|
|
153
|
+
### Resource Design
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
GET /api/tasks → List tasks (with query params for filtering)
|
|
157
|
+
POST /api/tasks → Create a task
|
|
158
|
+
GET /api/tasks/:id → Get a single task
|
|
159
|
+
PATCH /api/tasks/:id → Update a task (partial)
|
|
160
|
+
DELETE /api/tasks/:id → Delete a task
|
|
161
|
+
|
|
162
|
+
GET /api/tasks/:id/comments → List comments for a task (sub-resource)
|
|
163
|
+
POST /api/tasks/:id/comments → Add a comment to a task
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Pagination
|
|
167
|
+
|
|
168
|
+
Paginate list endpoints:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// Request
|
|
172
|
+
GET /api/tasks?page=1&pageSize=20&sortBy=createdAt&sortOrder=desc
|
|
173
|
+
|
|
174
|
+
// Response
|
|
175
|
+
{
|
|
176
|
+
"data": [...],
|
|
177
|
+
"pagination": {
|
|
178
|
+
"page": 1,
|
|
179
|
+
"pageSize": 20,
|
|
180
|
+
"totalItems": 142,
|
|
181
|
+
"totalPages": 8
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Filtering
|
|
187
|
+
|
|
188
|
+
Use query parameters for filters:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
GET /api/tasks?status=in_progress&assignee=user123&createdAfter=2025-01-01
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Partial Updates (PATCH)
|
|
195
|
+
|
|
196
|
+
Accept partial objects — only update what's provided:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Only title changes, everything else preserved
|
|
200
|
+
PATCH /api/tasks/123
|
|
201
|
+
{ "title": "Updated title" }
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## TypeScript Interface Patterns
|
|
205
|
+
|
|
206
|
+
### Use Discriminated Unions for Variants
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
// Good: Each variant is explicit
|
|
210
|
+
type TaskStatus =
|
|
211
|
+
| { type: 'pending' }
|
|
212
|
+
| { type: 'in_progress'; assignee: string; startedAt: Date }
|
|
213
|
+
| { type: 'completed'; completedAt: Date; completedBy: string }
|
|
214
|
+
| { type: 'cancelled'; reason: string; cancelledAt: Date };
|
|
215
|
+
|
|
216
|
+
// Consumer gets type narrowing
|
|
217
|
+
function getStatusLabel(status: TaskStatus): string {
|
|
218
|
+
switch (status.type) {
|
|
219
|
+
case 'pending': return 'Pending';
|
|
220
|
+
case 'in_progress': return `In progress (${status.assignee})`;
|
|
221
|
+
case 'completed': return `Done on ${status.completedAt}`;
|
|
222
|
+
case 'cancelled': return `Cancelled: ${status.reason}`;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Input/Output Separation
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
// Input: what the caller provides
|
|
231
|
+
interface CreateTaskInput {
|
|
232
|
+
title: string;
|
|
233
|
+
description?: string;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Output: what the system returns (includes server-generated fields)
|
|
237
|
+
interface Task {
|
|
238
|
+
id: string;
|
|
239
|
+
title: string;
|
|
240
|
+
description: string | null;
|
|
241
|
+
createdAt: Date;
|
|
242
|
+
updatedAt: Date;
|
|
243
|
+
createdBy: string;
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Use Branded Types for IDs
|
|
248
|
+
|
|
249
|
+
```typescript
|
|
250
|
+
type TaskId = string & { readonly __brand: 'TaskId' };
|
|
251
|
+
type UserId = string & { readonly __brand: 'UserId' };
|
|
252
|
+
|
|
253
|
+
// Prevents accidentally passing a UserId where a TaskId is expected
|
|
254
|
+
function getTask(id: TaskId): Promise<Task> { ... }
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Common Rationalizations
|
|
258
|
+
|
|
259
|
+
| Rationalization | Reality |
|
|
260
|
+
|---|---|
|
|
261
|
+
| "We'll document the API later" | The types ARE the documentation. Define them first. |
|
|
262
|
+
| "We don't need pagination for now" | You will the moment someone has 100+ items. Add it from the start. |
|
|
263
|
+
| "PATCH is complicated, let's just use PUT" | PUT requires the full object every time. PATCH is what clients actually want. |
|
|
264
|
+
| "We'll version the API when we need to" | Breaking changes without versioning break consumers. Design for extension from the start. |
|
|
265
|
+
| "Nobody uses that undocumented behavior" | Hyrum's Law: if it's observable, somebody depends on it. Treat every public behavior as a commitment. |
|
|
266
|
+
| "We can just maintain two versions" | Multiple versions multiply maintenance cost and create diamond dependency problems. Prefer the One-Version Rule. |
|
|
267
|
+
| "Internal APIs don't need contracts" | Internal consumers are still consumers. Contracts prevent coupling and enable parallel work. |
|
|
268
|
+
|
|
269
|
+
## Red Flags
|
|
270
|
+
|
|
271
|
+
- Endpoints that return different shapes depending on conditions
|
|
272
|
+
- Inconsistent error formats across endpoints
|
|
273
|
+
- Validation scattered throughout internal code instead of at boundaries
|
|
274
|
+
- Breaking changes to existing fields (type changes, removals)
|
|
275
|
+
- List endpoints without pagination
|
|
276
|
+
- Verbs in REST URLs (`/api/createTask`, `/api/getUsers`)
|
|
277
|
+
- Third-party API responses used without validation or sanitization
|
|
278
|
+
|
|
279
|
+
## Verification
|
|
280
|
+
|
|
281
|
+
After designing an API:
|
|
282
|
+
|
|
283
|
+
- [ ] Every endpoint has typed input and output schemas
|
|
284
|
+
- [ ] Error responses follow a single consistent format
|
|
285
|
+
- [ ] Validation happens at system boundaries only
|
|
286
|
+
- [ ] List endpoints support pagination
|
|
287
|
+
- [ ] New fields are additive and optional (backward compatible)
|
|
288
|
+
- [ ] Naming follows consistent conventions across all endpoints
|
|
289
|
+
- [ ] API documentation or types are committed alongside the implementation
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
kind: skill
|
|
2
|
+
name: api-and-interface-design
|
|
3
|
+
title: API 与接口设计
|
|
4
|
+
description: 指导稳定的 API 与接口设计。适用于设计 API、模块边界或任何公共接口,也适用于创建 REST/GraphQL 端点、定义跨模块类型契约以及划分前后端边界。
|
|
5
|
+
tier: recommended
|
|
6
|
+
audience: advanced
|
|
7
|
+
stability: stable
|
|
8
|
+
suggests:
|
|
9
|
+
- skill:engineering-principles
|
|
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: api-and-interface-design
|
|
19
|
+
origin_path: skills/api-and-interface-design/SKILL.md
|
|
20
|
+
origin_id: skill:api-and-interface-design
|
|
21
|
+
notes: 基于 agent-skills 的接口设计能力中文化整理。
|
|
File without changes
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Brainstorming and Design
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
在写任何代码之前,通过自然的协作对话将想法变为完整的设计。先理解当前项目上下文,然后逐一提问细化想法,最终提出设计方案并获得用户认可。
|
|
6
|
+
|
|
7
|
+
**在你展示设计方案并获得用户同意之前,不要调用任何实现技能、编写任何代码、搭建任何项目。** 无论项目看起来多简单,这条规则都适用。
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- 开始一个新项目或功能之前
|
|
12
|
+
- 需求模糊,需要通过对话探索清晰化
|
|
13
|
+
- 有多种实现方案需要权衡
|
|
14
|
+
- 在 `/idea`(发散思维)之后、`/spec`(正式规格)之前
|
|
15
|
+
- 任何涉及创造性工作的场景
|
|
16
|
+
|
|
17
|
+
## 反模式:"这太简单不需要设计"
|
|
18
|
+
|
|
19
|
+
每个项目都要经过这个流程。一个 TODO 列表、一个工具函数、一个配置变更 — 都不例外。"简单"项目恰恰是未经审视的假设造成最多浪费的地方。设计可以很短(真正简单的项目只需几句话),但你**必须**展示并获得认可。
|
|
20
|
+
|
|
21
|
+
## 流程清单
|
|
22
|
+
|
|
23
|
+
按顺序完成以下步骤:
|
|
24
|
+
|
|
25
|
+
1. **探索项目上下文** — 检查文件、文档、近期提交
|
|
26
|
+
2. **逐一提出澄清问题** — 理解目的、约束、成功标准
|
|
27
|
+
3. **提出 2-3 种方案** — 附带权衡分析和你的推荐
|
|
28
|
+
4. **分段展示设计** — 按复杂度缩放每个部分,每段确认后继续
|
|
29
|
+
5. **设计自审** — 检查占位符、矛盾、歧义、范围
|
|
30
|
+
6. **用户审核** — 确认设计后再进入下一步
|
|
31
|
+
7. **转入实现** — 调用 `planning-and-task-breakdown` 或 `spec-driven-development`
|
|
32
|
+
|
|
33
|
+
## 理解想法
|
|
34
|
+
|
|
35
|
+
### 探索项目状态
|
|
36
|
+
- 先检查当前项目状态(文件、文档、近期提交)
|
|
37
|
+
- 在深入细节之前,评估范围:如果请求描述了多个独立子系统(如"构建一个包含聊天、文件存储、计费和分析的平台"),立即标记
|
|
38
|
+
- 如果项目过大无法用一个规格覆盖,帮助用户分解为子项目
|
|
39
|
+
|
|
40
|
+
### 提问原则
|
|
41
|
+
- **一次一个问题** — 不要用多个问题淹没用户
|
|
42
|
+
- **多选题优先** — 比开放式问题更容易回答
|
|
43
|
+
- **聚焦理解** — 目的、约束、成功标准
|
|
44
|
+
- 如果一个话题需要更多探索,分成多个问题
|
|
45
|
+
|
|
46
|
+
### 探索方案
|
|
47
|
+
- 提出 2-3 种不同方案,附带权衡
|
|
48
|
+
- 以对话式呈现,先说推荐方案并解释原因
|
|
49
|
+
- 不要过早锁定方案
|
|
50
|
+
|
|
51
|
+
## 展示设计
|
|
52
|
+
|
|
53
|
+
一旦你认为理解了要构建什么,展示设计:
|
|
54
|
+
|
|
55
|
+
- **按复杂度缩放**:直接的部分几句话,复杂的部分详细展开
|
|
56
|
+
- **每段之后确认**:"到这里看起来对吗?"
|
|
57
|
+
- **覆盖面**:架构、组件、数据流、错误处理、测试策略
|
|
58
|
+
- **准备回退**:如果什么不合理,随时回去澄清
|
|
59
|
+
|
|
60
|
+
### 设计原则
|
|
61
|
+
|
|
62
|
+
- **隔离与清晰** — 系统拆分为小单元,每个有单一目的,通过定义良好的接口通信
|
|
63
|
+
- **可独立理解** — 每个单元能回答:它做什么、怎么用它、它依赖什么
|
|
64
|
+
- **YAGNI 无情砍** — 移除所有不必要的功能,不为可能的未来需求过度设计
|
|
65
|
+
|
|
66
|
+
### 在已有代码库中工作
|
|
67
|
+
|
|
68
|
+
- 先探索现有结构,遵循已有模式
|
|
69
|
+
- 如果现有代码有问题影响了当前工作(文件太大、边界不清等),将改进作为设计的一部分
|
|
70
|
+
- 不要提出无关的重构,保持聚焦
|
|
71
|
+
|
|
72
|
+
## 设计自审
|
|
73
|
+
|
|
74
|
+
写完设计后,用新鲜的眼光审视:
|
|
75
|
+
|
|
76
|
+
1. **占位符扫描** — 有任何"TBD"、"TODO"、不完整部分?修复它们
|
|
77
|
+
2. **内部一致性** — 有矛盾的部分吗?架构与功能描述匹配吗?
|
|
78
|
+
3. **范围检查** — 是否足够聚焦可以用一个实现计划覆盖?
|
|
79
|
+
4. **歧义检查** — 有需求可以两种方式解读吗?选一种,明确写出
|
|
80
|
+
|
|
81
|
+
发现问题就地修复,不需要重新审查。
|
|
82
|
+
|
|
83
|
+
## 用户审核门控
|
|
84
|
+
|
|
85
|
+
设计自审通过后,请用户审核:
|
|
86
|
+
|
|
87
|
+
> "设计已完成。请审核后告诉我是否需要修改,确认后我们将开始制定实现计划。"
|
|
88
|
+
|
|
89
|
+
等待用户回应。如果请求修改,修改后重新进行自审。**只有用户确认后才能继续。**
|
|
90
|
+
|
|
91
|
+
## 与其他技能的关系
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
/idea (idea-refine) ← 发散思维,探索可能性
|
|
95
|
+
│
|
|
96
|
+
▼
|
|
97
|
+
brainstorming-and-design ← 本技能:收敛为具体设计
|
|
98
|
+
│
|
|
99
|
+
▼
|
|
100
|
+
/spec (spec-driven-development) ← 正式的技术规格说明
|
|
101
|
+
│
|
|
102
|
+
▼
|
|
103
|
+
/task-plan (planning-and-task-breakdown) ← 拆解为可执行任务
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- **idea-refine** — 上游:当想法还很模糊时,先用 `/idea` 发散探索
|
|
107
|
+
- **spec-driven-development** — 下游:设计确认后,进入正式规格编写
|
|
108
|
+
- **planning-and-task-breakdown** — 下游:如果设计已经足够具体,可以直接进入任务拆解
|
|
109
|
+
|
|
110
|
+
## 关键原则
|
|
111
|
+
|
|
112
|
+
| 原则 | 说明 |
|
|
113
|
+
|------|------|
|
|
114
|
+
| 一次一个问题 | 不要用多个问题淹没用户 |
|
|
115
|
+
| 多选题优先 | 比开放式问题更容易回答 |
|
|
116
|
+
| YAGNI 无情砍 | 移除不必要的功能 |
|
|
117
|
+
| 探索替代方案 | 总是提出 2-3 种方案再决定 |
|
|
118
|
+
| 增量验证 | 展示设计,获得确认后再继续 |
|
|
119
|
+
| 灵活回退 | 发现问题随时回去澄清 |
|
|
120
|
+
|
|
121
|
+
## Red Flags
|
|
122
|
+
|
|
123
|
+
- 跳过设计直接写代码("太简单了不需要设计")
|
|
124
|
+
- 用多个问题轰炸用户
|
|
125
|
+
- 只提出一种方案没有替代选项
|
|
126
|
+
- 设计中有 TBD/TODO 就转入实现
|
|
127
|
+
- 不等用户确认就开始计划
|
|
128
|
+
- 提出不相关的重构建议
|
|
129
|
+
- 为可能的未来需求过度设计
|