From 70dda499461e1f7ac2ceae0baa59e82fa339e0e9 Mon Sep 17 00:00:00 2001 From: yhangf Date: Sat, 11 Apr 2026 11:11:49 +0800 Subject: [PATCH] feat(costrict): add strict-spec skill and rename skill/ to skills/ --- scripts/generate-skills.ts | 2 +- src/costrict/agents/strictSpec.ts | 3 +- src/costrict/{skill => skills}/builtin.ts | 0 .../{skill => skills}/codeReviewSecurity.ts | 0 src/costrict/{skill => skills}/projectWiki.ts | 0 src/costrict/{skill => skills}/strictPlan.ts | 0 src/costrict/skills/strictSpec.ts | 33 +++++++++++++++++++ src/costrict/{skill => skills}/tdd.ts | 0 src/skills/bundled/index.ts | 10 +++--- 9 files changed, 42 insertions(+), 6 deletions(-) rename src/costrict/{skill => skills}/builtin.ts (100%) rename src/costrict/{skill => skills}/codeReviewSecurity.ts (100%) rename src/costrict/{skill => skills}/projectWiki.ts (100%) rename src/costrict/{skill => skills}/strictPlan.ts (100%) create mode 100644 src/costrict/skills/strictSpec.ts rename src/costrict/{skill => skills}/tdd.ts (100%) diff --git a/scripts/generate-skills.ts b/scripts/generate-skills.ts index b1a84109a..25da275d2 100644 --- a/scripts/generate-skills.ts +++ b/scripts/generate-skills.ts @@ -15,7 +15,7 @@ const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const bundledSkillsDir = path.resolve(__dirname, '../.tmp/skills') -const builtinTsFile = path.resolve(__dirname, '../src/costrict/skill/builtin.ts') +const builtinTsFile = path.resolve(__dirname, '../src/costrict/skills/builtin.ts') const BUILTIN_SKILLS = { 'security-review': { diff --git a/src/costrict/agents/strictSpec.ts b/src/costrict/agents/strictSpec.ts index f304df742..e116227e9 100644 --- a/src/costrict/agents/strictSpec.ts +++ b/src/costrict/agents/strictSpec.ts @@ -84,6 +84,7 @@ export const STRICT_SPEC_AGENT: BuiltInAgentDefinition = { source: 'built-in', baseDir: 'built-in', model: 'inherit', - omitClaudeMd: true, + omitClaudeMd: false, + isMainThread: true, getSystemPrompt: () => getStrictSpecSystemPrompt(), } diff --git a/src/costrict/skill/builtin.ts b/src/costrict/skills/builtin.ts similarity index 100% rename from src/costrict/skill/builtin.ts rename to src/costrict/skills/builtin.ts diff --git a/src/costrict/skill/codeReviewSecurity.ts b/src/costrict/skills/codeReviewSecurity.ts similarity index 100% rename from src/costrict/skill/codeReviewSecurity.ts rename to src/costrict/skills/codeReviewSecurity.ts diff --git a/src/costrict/skill/projectWiki.ts b/src/costrict/skills/projectWiki.ts similarity index 100% rename from src/costrict/skill/projectWiki.ts rename to src/costrict/skills/projectWiki.ts diff --git a/src/costrict/skill/strictPlan.ts b/src/costrict/skills/strictPlan.ts similarity index 100% rename from src/costrict/skill/strictPlan.ts rename to src/costrict/skills/strictPlan.ts diff --git a/src/costrict/skills/strictSpec.ts b/src/costrict/skills/strictSpec.ts new file mode 100644 index 000000000..4c3a9e355 --- /dev/null +++ b/src/costrict/skills/strictSpec.ts @@ -0,0 +1,33 @@ +import { registerBundledSkill } from '../../skills/bundledSkills.js' + +export function registerStrictSpecSkill(): void { + registerBundledSkill({ + name: 'strict-spec', + description: + '将用户需求按照标准阶段分配到对应工作流Agent执行。Use this when you need to orchestrate user requirements through the standard workflow stages: requirements clarification → architecture design → task planning → execution. This agent coordinates the Spec workflow with four rigorous stages to ensure high-quality delivery.', + whenToUse: + '将用户需求按照标准阶段分配到对应工作流Agent执行。Use this when you need to orchestrate user requirements through the standard workflow stages: requirements clarification → architecture design → task planning → execution. This agent coordinates the Spec workflow with four rigorous stages to ensure high-quality delivery.', + userInvocable: true, + // 关键:在子 Agent 中运行 + context: 'fork', + // 关键:使用 StrictSpec Agent + agent: 'StrictSpec', + async getPromptForCommand(args) { + const userRequest = args.trim() + if (!userRequest) { + return [ + { + type: 'text', + text: '请提供需要规划的需求描述。用法: /strict-spec <需求描述>', + }, + ] + } + return [ + { + type: 'text', + text: `用户需求:${userRequest}`, + }, + ] + }, + }) +} diff --git a/src/costrict/skill/tdd.ts b/src/costrict/skills/tdd.ts similarity index 100% rename from src/costrict/skill/tdd.ts rename to src/costrict/skills/tdd.ts diff --git a/src/skills/bundled/index.ts b/src/skills/bundled/index.ts index b006ee71b..4aa2ac5da 100644 --- a/src/skills/bundled/index.ts +++ b/src/skills/bundled/index.ts @@ -1,6 +1,6 @@ import { feature } from 'bun:bundle' import { shouldAutoEnableClaudeInChrome } from 'src/utils/claudeInChrome/setup.js' -import { registerCodeReviewSecuritySkill } from 'src/costrict/skill/codeReviewSecurity.js' +import { registerCodeReviewSecuritySkill } from 'src/costrict/skills/codeReviewSecurity.js' import { registerBatchSkill } from './batch.js' import { registerClaudeInChromeSkill } from './claudeInChrome.js' import { registerDebugSkill } from './debug.js' @@ -15,9 +15,10 @@ import { registerLoopSkill } from './loop.js' import { registerDreamSkill } from './dream.js' import { registerUpdateConfigSkill } from './updateConfig.js' import { registerVerifySkill } from './verify.js' -import { registerStrictPlanSkill } from '../../costrict/skill/strictPlan.js' -import { registerProjectWikiSkill } from 'src/costrict/skill/projectWiki.js' -import { registerTddSkill } from 'src/costrict/skill/tdd.js' +import { registerStrictPlanSkill } from '../../costrict/skills/strictPlan.js' +import { registerStrictSpecSkill } from '../../costrict/skills/strictSpec.js' +import { registerProjectWikiSkill } from 'src/costrict/skills/projectWiki.js' +import { registerTddSkill } from 'src/costrict/skills/tdd.js' /** * Initialize all bundled skills. @@ -34,6 +35,7 @@ export function initBundledSkills(): void { registerProjectWikiSkill() registerTddSkill() registerStrictPlanSkill() + registerStrictSpecSkill() registerKeybindingsSkill() registerVerifySkill() registerDebugSkill()