@cubis/foundry 0.3.76 → 0.3.77
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/dist/cli/core.js +57 -0
- package/dist/cli/core.js.map +1 -1
- package/mcp/src/tools/skillTools.test.ts +34 -1
- package/package.json +1 -1
- package/src/cli/core.ts +66 -0
- package/workflows/skills/_schema/skill-platform-attributes.json +7 -0
- package/workflows/skills/deep-research/SKILL.md +81 -0
- package/workflows/skills/deep-research/evals/assertions.md +17 -0
- package/workflows/skills/deep-research/evals/evals.json +56 -0
- package/workflows/skills/deep-research/examples/01-latest-docs-check.md +12 -0
- package/workflows/skills/deep-research/examples/02-ecosystem-comparison.md +12 -0
- package/workflows/skills/deep-research/examples/03-research-to-implementation-handoff.md +12 -0
- package/workflows/skills/deep-research/references/comparison-checklist.md +57 -0
- package/workflows/skills/deep-research/references/research-output.md +69 -0
- package/workflows/skills/deep-research/references/source-ladder.md +81 -0
- package/workflows/skills/generated/skill-audit.json +11 -2
- package/workflows/skills/generated/skill-catalog.json +36 -4
- package/workflows/skills/skills_index.json +32 -0
- package/workflows/workflows/agent-environment-setup/generated/route-manifest.json +7 -7
- package/workflows/workflows/agent-environment-setup/manifest.json +27 -1
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/orchestrator.md +6 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/project-planner.md +4 -3
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/researcher.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/accessibility.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/backend.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/create.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/database.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/debug.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/devops.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/implement-track.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/migrate.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/mobile.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/onboard.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/orchestrate.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/plan.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/refactor.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/release.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/review.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/security.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/test.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/vercel.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/rules/GEMINI.md +13 -8
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/SKILL.md +89 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/evals/assertions.md +17 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/evals/evals.json +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/examples/01-latest-docs-check.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/examples/02-ecosystem-comparison.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/examples/03-research-to-implementation-handoff.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/references/comparison-checklist.md +57 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/references/research-output.md +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/references/source-ladder.md +81 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/onboard.md +3 -3
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/orchestrate.md +2 -2
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/plan.md +4 -4
- package/workflows/workflows/agent-environment-setup/platforms/claude/agents/orchestrator.md +6 -5
- package/workflows/workflows/agent-environment-setup/platforms/claude/agents/project-planner.md +4 -3
- package/workflows/workflows/agent-environment-setup/platforms/claude/agents/researcher.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/claude/hooks/README.md +15 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/hooks/route-research-guard.mjs +39 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/hooks/settings.snippet.json +15 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/rules/CLAUDE.md +15 -8
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/SKILL.md +95 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/evals/assertions.md +17 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/evals/evals.json +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/examples/01-latest-docs-check.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/examples/02-ecosystem-comparison.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/examples/03-research-to-implementation-handoff.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/references/comparison-checklist.md +57 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/references/research-output.md +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/references/source-ladder.md +81 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/skills_index.json +32 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/workflows/onboard.md +3 -3
- package/workflows/workflows/agent-environment-setup/platforms/claude/workflows/orchestrate.md +2 -2
- package/workflows/workflows/agent-environment-setup/platforms/claude/workflows/plan.md +4 -4
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/orchestrator.md +6 -5
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/project-planner.md +4 -3
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/researcher.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/codex/rules/AGENTS.md +13 -8
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/SKILL.md +89 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/evals/assertions.md +17 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/evals/evals.json +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/examples/01-latest-docs-check.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/examples/02-ecosystem-comparison.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/examples/03-research-to-implementation-handoff.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/references/comparison-checklist.md +57 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/references/research-output.md +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/references/source-ladder.md +81 -0
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/onboard.md +3 -3
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/orchestrate.md +2 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/plan.md +4 -4
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/orchestrator.md +6 -5
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/project-planner.md +4 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/researcher.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-accessibility.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-backend.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-create.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-database.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-debug.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-devops.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-implement-track.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-migrate.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-mobile.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-onboard.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-orchestrate.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-plan.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-refactor.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-release.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-review.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-security.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-test.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-vercel.prompt.md +2 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/rules/copilot-instructions.md +13 -8
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/SKILL.md +94 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/evals/assertions.md +17 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/evals/evals.json +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/examples/01-latest-docs-check.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/examples/02-ecosystem-comparison.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/examples/03-research-to-implementation-handoff.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/references/comparison-checklist.md +57 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/references/research-output.md +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/references/source-ladder.md +81 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/skills_index.json +32 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/workflows/onboard.md +3 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/workflows/orchestrate.md +2 -2
- package/workflows/workflows/agent-environment-setup/platforms/copilot/workflows/plan.md +4 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/accessibility.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/backend.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/create.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/database.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/debug.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/devops.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/implement-track.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/migrate.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/mobile.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/onboard.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/orchestrate.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/plan.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/refactor.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/release.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/review.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/security.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/test.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/vercel.toml +2 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/rules/GEMINI.md +13 -8
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/SKILL.md +89 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/evals/assertions.md +17 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/evals/evals.json +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/examples/01-latest-docs-check.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/examples/02-ecosystem-comparison.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/examples/03-research-to-implementation-handoff.md +12 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/references/comparison-checklist.md +57 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/references/research-output.md +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/references/source-ladder.md +81 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/onboard.md +3 -3
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/orchestrate.md +2 -2
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/plan.md +4 -4
- package/workflows/workflows/agent-environment-setup/shared/agents/orchestrator.md +2 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/project-planner.md +2 -1
- package/workflows/workflows/agent-environment-setup/shared/agents/researcher.md +5 -1
- package/workflows/workflows/agent-environment-setup/shared/rules/STEERING.md +44 -13
- package/workflows/workflows/agent-environment-setup/shared/rules/overrides/claude.md +2 -0
- package/workflows/workflows/agent-environment-setup/shared/rules/overrides/gemini.md +20 -0
- package/workflows/workflows/agent-environment-setup/shared/workflows/onboard.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/workflows/orchestrate.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/workflows/plan.md +2 -2
|
@@ -85,7 +85,7 @@ function createRouteManifest(): RouteManifest {
|
|
|
85
85
|
$schema: "cubis-foundry-route-manifest-v1",
|
|
86
86
|
generatedAt: new Date(0).toISOString(),
|
|
87
87
|
contentHash: "test",
|
|
88
|
-
summary: { totalRoutes:
|
|
88
|
+
summary: { totalRoutes: 7, workflows: 5, agents: 2 },
|
|
89
89
|
routes: [
|
|
90
90
|
{
|
|
91
91
|
kind: "workflow",
|
|
@@ -207,6 +207,23 @@ function createRouteManifest(): RouteManifest {
|
|
|
207
207
|
antigravity: { agentFile: "test-engineer.md" },
|
|
208
208
|
},
|
|
209
209
|
},
|
|
210
|
+
{
|
|
211
|
+
kind: "agent",
|
|
212
|
+
id: "researcher",
|
|
213
|
+
command: null,
|
|
214
|
+
displayName: "researcher",
|
|
215
|
+
description: "Expert in codebase research and external verification",
|
|
216
|
+
triggers: ["research", "latest", "compare", "investigate", "survey"],
|
|
217
|
+
primaryAgent: "researcher",
|
|
218
|
+
supportingAgents: [],
|
|
219
|
+
primarySkills: ["deep-research", "architecture-designer"],
|
|
220
|
+
supportingSkills: ["prompt-engineer"],
|
|
221
|
+
artifacts: {
|
|
222
|
+
codex: { compatibilityAlias: "$agent-researcher", agentFile: "researcher.md" },
|
|
223
|
+
copilot: { agentFile: "researcher.md" },
|
|
224
|
+
antigravity: { agentFile: "researcher.md" },
|
|
225
|
+
},
|
|
226
|
+
},
|
|
210
227
|
],
|
|
211
228
|
};
|
|
212
229
|
}
|
|
@@ -612,6 +629,22 @@ describe("skill tools", () => {
|
|
|
612
629
|
});
|
|
613
630
|
});
|
|
614
631
|
|
|
632
|
+
it("routes research intent to researcher with deep-research as the primary skill hint", async () => {
|
|
633
|
+
const result = payload(
|
|
634
|
+
await handleRouteResolve(
|
|
635
|
+
{ intent: "research latest Claude Code hooks behavior" },
|
|
636
|
+
createRouteManifest(),
|
|
637
|
+
),
|
|
638
|
+
);
|
|
639
|
+
expect(result).toMatchObject({
|
|
640
|
+
resolved: true,
|
|
641
|
+
kind: "agent",
|
|
642
|
+
id: "researcher",
|
|
643
|
+
primarySkillHint: "deep-research",
|
|
644
|
+
});
|
|
645
|
+
expect(["trigger-match", "intent-match"]).toContain(result.matchedBy);
|
|
646
|
+
});
|
|
647
|
+
|
|
615
648
|
it("falls back cleanly when no route matches the intent", async () => {
|
|
616
649
|
const result = payload(
|
|
617
650
|
await handleRouteResolve(
|
package/package.json
CHANGED
package/src/cli/core.ts
CHANGED
|
@@ -174,17 +174,20 @@ const WORKFLOW_PROFILES = {
|
|
|
174
174
|
workflowDirs: [".claude/workflows"],
|
|
175
175
|
agentDirs: [".claude/agents"],
|
|
176
176
|
skillDirs: [".claude/skills"],
|
|
177
|
+
hookDirs: [".claude/hooks"],
|
|
177
178
|
ruleFilesByPriority: ["CLAUDE.md"],
|
|
178
179
|
},
|
|
179
180
|
global: {
|
|
180
181
|
workflowDirs: ["~/.claude/workflows"],
|
|
181
182
|
agentDirs: ["~/.claude/agents"],
|
|
182
183
|
skillDirs: ["~/.claude/skills"],
|
|
184
|
+
hookDirs: ["~/.claude/hooks"],
|
|
183
185
|
ruleFilesByPriority: ["~/.claude/CLAUDE.md"],
|
|
184
186
|
},
|
|
185
187
|
detectorPaths: [
|
|
186
188
|
"CLAUDE.md",
|
|
187
189
|
".claude",
|
|
190
|
+
".claude/hooks",
|
|
188
191
|
".claude/rules",
|
|
189
192
|
".claude/settings.json",
|
|
190
193
|
],
|
|
@@ -2783,6 +2786,7 @@ async function recordBundleInstallState({
|
|
|
2783
2786
|
skills: artifacts.skills.map(toPosixPath),
|
|
2784
2787
|
commands: (artifacts.commands || []).map(toPosixPath),
|
|
2785
2788
|
prompts: (artifacts.prompts || []).map(toPosixPath),
|
|
2789
|
+
hooks: (artifacts.hooks || []).map(toPosixPath),
|
|
2786
2790
|
};
|
|
2787
2791
|
|
|
2788
2792
|
await writeState(scope, state, cwd);
|
|
@@ -2815,6 +2819,7 @@ async function resolveProfilePaths(profileId, scope, cwd = process.cwd()) {
|
|
|
2815
2819
|
const skillDirs = Array.isArray(cfg.skillDirs) ? cfg.skillDirs : [];
|
|
2816
2820
|
const commandDirs = Array.isArray(cfg.commandDirs) ? cfg.commandDirs : [];
|
|
2817
2821
|
const promptDirs = Array.isArray(cfg.promptDirs) ? cfg.promptDirs : [];
|
|
2822
|
+
const hookDirs = Array.isArray(cfg.hookDirs) ? cfg.hookDirs : [];
|
|
2818
2823
|
|
|
2819
2824
|
const resolvePreferredDir = async (dirs) => {
|
|
2820
2825
|
if (dirs.length === 0) return null;
|
|
@@ -2831,6 +2836,7 @@ async function resolveProfilePaths(profileId, scope, cwd = process.cwd()) {
|
|
|
2831
2836
|
skillsDir: await resolvePreferredDir(skillDirs),
|
|
2832
2837
|
commandsDir: commandDirs[0] ? expandPath(commandDirs[0], cwd) : null,
|
|
2833
2838
|
promptsDir: promptDirs[0] ? expandPath(promptDirs[0], cwd) : null,
|
|
2839
|
+
hooksDir: hookDirs[0] ? expandPath(hookDirs[0], cwd) : null,
|
|
2834
2840
|
ruleFilesByPriority: cfg.ruleFilesByPriority.map((filePath) =>
|
|
2835
2841
|
expandPath(filePath, cwd),
|
|
2836
2842
|
),
|
|
@@ -2862,6 +2868,7 @@ function resolveProfilePathCandidates(profileId, scope, cwd = process.cwd()) {
|
|
|
2862
2868
|
skillsDirs: expandUniquePaths(cfg.skillDirs, cwd),
|
|
2863
2869
|
commandsDirs: expandUniquePaths(cfg.commandDirs, cwd),
|
|
2864
2870
|
promptsDirs: expandUniquePaths(cfg.promptDirs, cwd),
|
|
2871
|
+
hooksDirs: expandUniquePaths(cfg.hookDirs, cwd),
|
|
2865
2872
|
ruleFilesByPriority: expandUniquePaths(cfg.ruleFilesByPriority, cwd),
|
|
2866
2873
|
};
|
|
2867
2874
|
}
|
|
@@ -2895,6 +2902,7 @@ async function resolveArtifactProfilePaths(
|
|
|
2895
2902
|
agentsDir: workspacePaths.agentsDir,
|
|
2896
2903
|
commandsDir: workspacePaths.commandsDir ?? scopedPaths.commandsDir,
|
|
2897
2904
|
promptsDir: workspacePaths.promptsDir ?? scopedPaths.promptsDir,
|
|
2905
|
+
hooksDir: scopedPaths.hooksDir,
|
|
2898
2906
|
};
|
|
2899
2907
|
}
|
|
2900
2908
|
|
|
@@ -6681,6 +6689,13 @@ async function installBundleArtifacts({
|
|
|
6681
6689
|
) {
|
|
6682
6690
|
await mkdir(profilePaths.promptsDir, { recursive: true });
|
|
6683
6691
|
}
|
|
6692
|
+
if (
|
|
6693
|
+
profilePaths.hooksDir &&
|
|
6694
|
+
Array.isArray(platformSpec.hooks) &&
|
|
6695
|
+
platformSpec.hooks.some((entry) => typeof entry?.file === "string")
|
|
6696
|
+
) {
|
|
6697
|
+
await mkdir(profilePaths.hooksDir, { recursive: true });
|
|
6698
|
+
}
|
|
6684
6699
|
}
|
|
6685
6700
|
|
|
6686
6701
|
const bundleRoot = path.join(agentAssetsRoot(), "workflows", bundleId);
|
|
@@ -6694,6 +6709,7 @@ async function installBundleArtifacts({
|
|
|
6694
6709
|
skills: [],
|
|
6695
6710
|
commands: [],
|
|
6696
6711
|
prompts: [],
|
|
6712
|
+
hooks: [],
|
|
6697
6713
|
};
|
|
6698
6714
|
|
|
6699
6715
|
// Bind useSymlinks into copyArtifact so every call site inherits it
|
|
@@ -6806,6 +6822,40 @@ async function installBundleArtifacts({
|
|
|
6806
6822
|
skipped.push(destination);
|
|
6807
6823
|
else installed.push(destination);
|
|
6808
6824
|
}
|
|
6825
|
+
const hookFiles = Array.isArray(platformSpec.hooks)
|
|
6826
|
+
? platformSpec.hooks
|
|
6827
|
+
.map((entry) =>
|
|
6828
|
+
typeof entry === "string"
|
|
6829
|
+
? entry
|
|
6830
|
+
: typeof entry?.file === "string"
|
|
6831
|
+
? entry.file
|
|
6832
|
+
: null,
|
|
6833
|
+
)
|
|
6834
|
+
.filter(Boolean)
|
|
6835
|
+
: [];
|
|
6836
|
+
for (const hookFile of hookFiles) {
|
|
6837
|
+
if (!profilePaths.hooksDir) continue;
|
|
6838
|
+
const source = path.join(platformRoot, "hooks", hookFile);
|
|
6839
|
+
const destination = path.join(
|
|
6840
|
+
profilePaths.hooksDir,
|
|
6841
|
+
path.basename(hookFile),
|
|
6842
|
+
);
|
|
6843
|
+
|
|
6844
|
+
if (!(await pathExists(source))) {
|
|
6845
|
+
throw new Error(`Missing hook source file: ${source}`);
|
|
6846
|
+
}
|
|
6847
|
+
|
|
6848
|
+
const result = await copyArt({
|
|
6849
|
+
source,
|
|
6850
|
+
destination,
|
|
6851
|
+
overwrite,
|
|
6852
|
+
dryRun,
|
|
6853
|
+
});
|
|
6854
|
+
artifacts.hooks.push(destination);
|
|
6855
|
+
if (result.action === "skipped" || result.action === "would-skip")
|
|
6856
|
+
skipped.push(destination);
|
|
6857
|
+
else installed.push(destination);
|
|
6858
|
+
}
|
|
6809
6859
|
if (shouldInstallPlatformSkills) {
|
|
6810
6860
|
const agentSkillDependencies = await resolvePlatformAgentSkillDependencies({
|
|
6811
6861
|
platformRoot,
|
|
@@ -7103,6 +7153,22 @@ async function removeBundleArtifacts({
|
|
|
7103
7153
|
if (await safeRemove(destination, dryRun)) removed.push(destination);
|
|
7104
7154
|
}
|
|
7105
7155
|
|
|
7156
|
+
for (const hookEntry of platformSpec.hooks || []) {
|
|
7157
|
+
if (!profilePaths.hooksDir) continue;
|
|
7158
|
+
const hookFile =
|
|
7159
|
+
typeof hookEntry === "string"
|
|
7160
|
+
? hookEntry
|
|
7161
|
+
: typeof hookEntry?.file === "string"
|
|
7162
|
+
? hookEntry.file
|
|
7163
|
+
: null;
|
|
7164
|
+
if (!hookFile) continue;
|
|
7165
|
+
const destination = path.join(
|
|
7166
|
+
profilePaths.hooksDir,
|
|
7167
|
+
path.basename(hookFile),
|
|
7168
|
+
);
|
|
7169
|
+
if (await safeRemove(destination, dryRun)) removed.push(destination);
|
|
7170
|
+
}
|
|
7171
|
+
|
|
7106
7172
|
const skillIds = await resolveInstallSkillIds({
|
|
7107
7173
|
platformSpec,
|
|
7108
7174
|
extraSkillIds: [],
|
|
@@ -38,6 +38,13 @@
|
|
|
38
38
|
"userInvocable": true,
|
|
39
39
|
"argumentHint": "Schema, query, or data model to design"
|
|
40
40
|
},
|
|
41
|
+
"deep-research": {
|
|
42
|
+
"allowedTools": ["Read", "Grep", "Glob", "Bash"],
|
|
43
|
+
"contextFork": true,
|
|
44
|
+
"forkAgent": "researcher",
|
|
45
|
+
"userInvocable": true,
|
|
46
|
+
"argumentHint": "Topic, vendor capability, or public comparison to research"
|
|
47
|
+
},
|
|
41
48
|
"django-drf": {
|
|
42
49
|
"allowedTools": ["Read", "Grep", "Glob", "Bash", "Edit", "Write"],
|
|
43
50
|
"contextFork": false,
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-research
|
|
3
|
+
description: Use when investigating latest vendor behavior, comparing tools or platforms, verifying claims beyond the repo, or gathering external evidence before implementation.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: cubis-foundry
|
|
7
|
+
version: "1.0"
|
|
8
|
+
compatibility: Claude Code, Codex, GitHub Copilot
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Deep Research
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Run a disciplined research pass before implementation when the repo alone is not enough. This skill keeps research evidence-driven: inspect the local codebase first, escalate to official docs when freshness or public comparison matters, then use labeled community evidence only when it adds practical context.
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
- Verifying latest SDK, CLI, API, or platform behavior
|
|
20
|
+
- Comparing tools, frameworks, hosted services, or implementation approaches
|
|
21
|
+
- Checking whether public docs and the local repo disagree
|
|
22
|
+
- Gathering external evidence before planning a migration or new capability
|
|
23
|
+
- Producing a structured research brief that hands off cleanly into implementation
|
|
24
|
+
|
|
25
|
+
## Instructions
|
|
26
|
+
|
|
27
|
+
1. **Define the research question before collecting sources** because vague research sprawls quickly. Restate the target topic, freshness requirement, comparison axis, and what decision the findings need to support.
|
|
28
|
+
|
|
29
|
+
2. **Inspect the repo first** because many questions are already answerable from local code, configs, tests, docs, or generated assets. Do not browse externally until the local evidence is exhausted or clearly insufficient.
|
|
30
|
+
|
|
31
|
+
3. **Decide whether external research is actually required** because not every task needs web evidence. Escalate only when freshness matters, public comparison matters, or the user explicitly asks to research or verify.
|
|
32
|
+
|
|
33
|
+
4. **Follow the source ladder strictly** because evidence quality matters. Use official docs, upstream repositories, standards, and maintainer material as primary sources before looking at blogs, issue threads, or Reddit.
|
|
34
|
+
|
|
35
|
+
5. **Capture concrete source details** because research without provenance is hard to trust. Record exact links, relevant dates, versions, and any repo files that support or contradict the external evidence.
|
|
36
|
+
|
|
37
|
+
6. **Cross-check important claims across more than one source when possible** because public docs, repos, and community advice can drift. If sources disagree, say so explicitly instead of smoothing over the conflict.
|
|
38
|
+
|
|
39
|
+
7. **Use Reddit and other community sources only as labeled secondary evidence** because they can surface practical gotchas but are not authoritative. Treat them as implementation color, not final truth.
|
|
40
|
+
|
|
41
|
+
8. **Separate verified facts from inference** because downstream planning depends on confidence. Mark what is directly supported by repo evidence or official sources versus what you infer from patterns or secondary signals.
|
|
42
|
+
|
|
43
|
+
9. **Keep the output decision-oriented** because the goal is not to dump links. Tie each finding back to the implementation, workflow, agent, or skill decision it affects.
|
|
44
|
+
|
|
45
|
+
10. **Recommend the next route explicitly** because research is usually a handoff, not the end of the task. Name the next workflow, agent, or exact skill that should continue the work.
|
|
46
|
+
|
|
47
|
+
11. **State the remaining gaps and risks** because incomplete research is still useful when the uncertainty is visible. Call out what you could not verify, what may have changed recently, and what assumptions remain.
|
|
48
|
+
|
|
49
|
+
12. **Avoid over-quoting and over-collecting** because research quality comes from synthesis, not volume. Prefer concise summaries with high-signal citations over long pasted excerpts.
|
|
50
|
+
|
|
51
|
+
13. **When the task turns into implementation, stop researching and hand off** because mixing discovery and execution usually creates drift. Deliver the research brief first, then route into the correct workflow or specialist.
|
|
52
|
+
|
|
53
|
+
## Output Format
|
|
54
|
+
|
|
55
|
+
Deliver:
|
|
56
|
+
|
|
57
|
+
1. **Research question** — topic, freshness requirement, and decision to support
|
|
58
|
+
2. **Verified facts** — repo evidence and primary-source findings
|
|
59
|
+
3. **Secondary/community evidence** — labeled lower-trust supporting signals
|
|
60
|
+
4. **Gaps / unknowns** — unresolved questions or contradictory evidence
|
|
61
|
+
5. **Recommended next route** — direct execution, workflow, agent, or exact skill to use next
|
|
62
|
+
|
|
63
|
+
## References
|
|
64
|
+
|
|
65
|
+
Load only the file needed for the current question.
|
|
66
|
+
|
|
67
|
+
| File | Load when |
|
|
68
|
+
| --- | --- |
|
|
69
|
+
| `references/source-ladder.md` | Need the repo-first and source-priority policy for official docs versus community evidence. |
|
|
70
|
+
| `references/research-output.md` | Need the structured output format, evidence labeling rules, or handoff pattern. |
|
|
71
|
+
| `references/comparison-checklist.md` | Comparing vendors, frameworks, or tools and need a concrete evaluation frame. |
|
|
72
|
+
|
|
73
|
+
## Examples
|
|
74
|
+
|
|
75
|
+
Use these when the task shape already matches.
|
|
76
|
+
|
|
77
|
+
| File | Use when |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| `examples/01-latest-docs-check.md` | Verifying a latest capability or doc claim before implementation. |
|
|
80
|
+
| `examples/02-ecosystem-comparison.md` | Comparing multiple tools or platforms with official-first sourcing. |
|
|
81
|
+
| `examples/03-research-to-implementation-handoff.md` | Turning research findings into a concrete next workflow or specialist handoff. |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Deep Research Eval Assertions
|
|
2
|
+
|
|
3
|
+
## Eval 1: Latest Capability Verification
|
|
4
|
+
|
|
5
|
+
1. **repo-first** — Starts by checking repo or local evidence before jumping to web claims.
|
|
6
|
+
2. **official-first** — Uses official docs or upstream sources as the primary evidence for the capability.
|
|
7
|
+
3. **secondary-labeled** — If community sources are mentioned, labels them as secondary evidence instead of presenting them as authoritative.
|
|
8
|
+
4. **gaps-called-out** — Identifies unresolved uncertainty or missing confirmation.
|
|
9
|
+
5. **next-route** — Ends with a concrete recommended workflow, agent, or skill to use next.
|
|
10
|
+
|
|
11
|
+
## Eval 2: Tool Comparison
|
|
12
|
+
|
|
13
|
+
1. **comparison-frame** — Defines the comparison axes instead of producing vague preferences.
|
|
14
|
+
2. **repo-impact** — Connects the comparison back to the current repo or implementation constraints.
|
|
15
|
+
3. **fact-vs-inference** — Separates verified facts from inference or interpretation.
|
|
16
|
+
4. **decision-oriented** — Produces a recommendation or explicit defer condition.
|
|
17
|
+
5. **no-research-sprawl** — Keeps the output concise and structured rather than dumping raw links.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "latest-capability-verification",
|
|
4
|
+
"description": "Validate that the skill performs repo-first research, prioritizes official documentation, labels secondary evidence, and recommends a next route.",
|
|
5
|
+
"prompt": "Research whether the latest official Claude Code hook surface supports reinforcing route honoring before implementation. Start with the current repo state, then use official docs if needed. If community sources add useful practical context, include them but label them appropriately. End with the next workflow, agent, or skill we should use.",
|
|
6
|
+
"assertions": [
|
|
7
|
+
{
|
|
8
|
+
"id": "repo-first",
|
|
9
|
+
"description": "Starts with repo or local evidence before using external sources."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "official-first",
|
|
13
|
+
"description": "Treats official docs or upstream sources as the primary evidence."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "secondary-labeled",
|
|
17
|
+
"description": "Labels any Reddit or community evidence as secondary rather than authoritative."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "gaps-called-out",
|
|
21
|
+
"description": "States any unresolved gaps, conflicts, or unknowns."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "next-route",
|
|
25
|
+
"description": "Ends with a concrete recommended next route."
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "tool-comparison",
|
|
31
|
+
"description": "Validate that the skill compares options with a clear frame, ties findings back to repo impact, and produces a decision-ready output.",
|
|
32
|
+
"prompt": "Compare whether our CLI should keep enforcement in Gemini command wrappers only or also add Claude hook templates. Use the repo state first, then official docs for current platform capabilities, and include community evidence only if it adds implementation nuance. Finish with a recommendation and the next route to take.",
|
|
33
|
+
"assertions": [
|
|
34
|
+
{
|
|
35
|
+
"id": "comparison-frame",
|
|
36
|
+
"description": "Defines concrete comparison axes such as repo impact, enforcement surface, and maintenance cost."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "repo-impact",
|
|
40
|
+
"description": "Connects each option back to the current repo or bundle behavior."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "fact-vs-inference",
|
|
44
|
+
"description": "Separates verified facts from inference or interpretation."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "decision-oriented",
|
|
48
|
+
"description": "Produces a recommendation or explicit defer condition."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "no-research-sprawl",
|
|
52
|
+
"description": "Keeps the answer structured instead of turning into an unfiltered dump of sources."
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Example: Latest Docs Check
|
|
2
|
+
|
|
3
|
+
## User Request
|
|
4
|
+
|
|
5
|
+
> Research whether Claude Code hooks can reinforce route honoring before we add new workflow rules.
|
|
6
|
+
|
|
7
|
+
## Expected Shape
|
|
8
|
+
|
|
9
|
+
1. Inspect the repo's current Claude rule and hook support first.
|
|
10
|
+
2. Verify the current official Claude docs for hooks, event names, and config format.
|
|
11
|
+
3. Separate those verified facts from any community commentary about hook effectiveness.
|
|
12
|
+
4. End with the recommended next route, for example `@researcher` continuing the research or `/create` applying the validated hook template changes.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Example: Ecosystem Comparison
|
|
2
|
+
|
|
3
|
+
## User Request
|
|
4
|
+
|
|
5
|
+
> Compare whether our CLI should keep Gemini command enforcement only, or add another platform-native hook layer for Claude as well.
|
|
6
|
+
|
|
7
|
+
## Expected Shape
|
|
8
|
+
|
|
9
|
+
1. Start with repo constraints and current platform bundle behavior.
|
|
10
|
+
2. Compare the official platform capabilities using primary docs.
|
|
11
|
+
3. Add any useful community evidence as clearly labeled secondary input.
|
|
12
|
+
4. Produce a recommendation tied to the repo: which platform gets which enforcement surface, and why.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Example: Research To Implementation Handoff
|
|
2
|
+
|
|
3
|
+
## User Request
|
|
4
|
+
|
|
5
|
+
> Research the latest Codex, Claude, and Gemini MCP behavior, then tell me the next route to update our workflow rules safely.
|
|
6
|
+
|
|
7
|
+
## Expected Shape
|
|
8
|
+
|
|
9
|
+
1. Gather repo evidence first.
|
|
10
|
+
2. Verify current official docs for each platform.
|
|
11
|
+
3. Summarize verified facts, secondary evidence, and gaps.
|
|
12
|
+
4. End with a precise next route such as `/plan` for a policy change or `skill-creator` for skill/rule packaging work.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Comparison Checklist
|
|
2
|
+
|
|
3
|
+
Use this when evaluating tools, frameworks, APIs, or platforms.
|
|
4
|
+
|
|
5
|
+
## 1. Scope the Comparison
|
|
6
|
+
|
|
7
|
+
Define:
|
|
8
|
+
|
|
9
|
+
- what is being compared
|
|
10
|
+
- whether the comparison is about implementation fit, operational cost, or product capability
|
|
11
|
+
- what time horizon matters: immediate migration, medium-term maintenance, or long-term platform fit
|
|
12
|
+
|
|
13
|
+
## 2. Compare on Stable Axes
|
|
14
|
+
|
|
15
|
+
Use a short set of dimensions:
|
|
16
|
+
|
|
17
|
+
- integration fit with the current repo
|
|
18
|
+
- maturity and maintenance signal
|
|
19
|
+
- official documentation quality
|
|
20
|
+
- configuration complexity
|
|
21
|
+
- ecosystem and tooling support
|
|
22
|
+
- operational constraints
|
|
23
|
+
- migration cost
|
|
24
|
+
|
|
25
|
+
Do not compare on vague criteria like "better DX" without concrete evidence.
|
|
26
|
+
|
|
27
|
+
## 3. Capture Repo Impact
|
|
28
|
+
|
|
29
|
+
Tie each option back to the current codebase:
|
|
30
|
+
|
|
31
|
+
- what code would change
|
|
32
|
+
- which workflows or agents would own the work
|
|
33
|
+
- what risks are specific to this repo
|
|
34
|
+
- whether new MCP tools or skills would be required
|
|
35
|
+
|
|
36
|
+
## 4. Separate Product Claims from Team Constraints
|
|
37
|
+
|
|
38
|
+
An option can be technically stronger and still be a worse fit for the repo.
|
|
39
|
+
|
|
40
|
+
Keep these separate:
|
|
41
|
+
|
|
42
|
+
- product capability
|
|
43
|
+
- ecosystem quality
|
|
44
|
+
- team familiarity
|
|
45
|
+
- migration blast radius
|
|
46
|
+
- existing architecture constraints
|
|
47
|
+
|
|
48
|
+
## 5. Decision Frame
|
|
49
|
+
|
|
50
|
+
Finish with one of:
|
|
51
|
+
|
|
52
|
+
- recommend option A
|
|
53
|
+
- recommend option B
|
|
54
|
+
- defer decision pending one missing verification
|
|
55
|
+
- keep current approach because switching cost outweighs gain
|
|
56
|
+
|
|
57
|
+
If the evidence is mixed, say what would change the recommendation.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Research Output Contract
|
|
2
|
+
|
|
3
|
+
## Required Sections
|
|
4
|
+
|
|
5
|
+
### 1. Research question
|
|
6
|
+
|
|
7
|
+
State:
|
|
8
|
+
|
|
9
|
+
- the exact topic
|
|
10
|
+
- why research was necessary
|
|
11
|
+
- whether freshness or public comparison mattered
|
|
12
|
+
- the decision this research is meant to support
|
|
13
|
+
|
|
14
|
+
### 2. Verified facts
|
|
15
|
+
|
|
16
|
+
List the strongest findings first.
|
|
17
|
+
|
|
18
|
+
For each fact:
|
|
19
|
+
|
|
20
|
+
- state the claim in one sentence
|
|
21
|
+
- cite the source class: repo, official docs, upstream repo, standard
|
|
22
|
+
- include the relevant link or file path
|
|
23
|
+
- include date/version when it matters
|
|
24
|
+
|
|
25
|
+
### 3. Secondary / community evidence
|
|
26
|
+
|
|
27
|
+
Only include this when it adds signal the primary sources did not provide.
|
|
28
|
+
|
|
29
|
+
For each item:
|
|
30
|
+
|
|
31
|
+
- label it as secondary evidence
|
|
32
|
+
- state what practical signal it adds
|
|
33
|
+
- avoid presenting it as settled fact
|
|
34
|
+
|
|
35
|
+
### 4. Gaps / unknowns
|
|
36
|
+
|
|
37
|
+
Document:
|
|
38
|
+
|
|
39
|
+
- unresolved conflicts
|
|
40
|
+
- missing official confirmation
|
|
41
|
+
- assumptions that still need validation
|
|
42
|
+
- risks if the team proceeds anyway
|
|
43
|
+
|
|
44
|
+
### 5. Recommended next route
|
|
45
|
+
|
|
46
|
+
Research should end with one clear recommendation:
|
|
47
|
+
|
|
48
|
+
- direct execution
|
|
49
|
+
- a specific workflow like `/plan` or `/create`
|
|
50
|
+
- a specialist like `@researcher` or `@frontend-specialist`
|
|
51
|
+
- an exact skill like `stitch` or `deep-research`
|
|
52
|
+
|
|
53
|
+
Keep this recommendation concrete enough that the next step does not need another routing pass.
|
|
54
|
+
|
|
55
|
+
## Compression Rules
|
|
56
|
+
|
|
57
|
+
- Prefer 5 strong findings over 20 weak ones.
|
|
58
|
+
- Do not paste long quotes from docs when a citation plus summary will do.
|
|
59
|
+
- If multiple sources say the same thing, summarize once and cite the strongest source.
|
|
60
|
+
- If research found nothing reliable, say that directly.
|
|
61
|
+
|
|
62
|
+
## Handoff Pattern
|
|
63
|
+
|
|
64
|
+
When handing off to implementation or planning, include:
|
|
65
|
+
|
|
66
|
+
- the decision summary
|
|
67
|
+
- the highest-confidence constraints
|
|
68
|
+
- the unresolved risks
|
|
69
|
+
- the next route to take
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Source Ladder
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Use the smallest amount of external research that still produces a decision-ready answer. Keep the evidence traceable and ordered by trust.
|
|
6
|
+
|
|
7
|
+
## 1. Repo / Local Evidence First
|
|
8
|
+
|
|
9
|
+
Start by inspecting:
|
|
10
|
+
|
|
11
|
+
- application code and tests
|
|
12
|
+
- README files and internal docs
|
|
13
|
+
- generated workflow or skill assets
|
|
14
|
+
- lockfiles, config files, and package manifests
|
|
15
|
+
- existing integration code and migration history
|
|
16
|
+
|
|
17
|
+
If the repo already answers the question, stop there. Do not browse externally just because web research feels safer.
|
|
18
|
+
|
|
19
|
+
## 2. Primary External Sources
|
|
20
|
+
|
|
21
|
+
Use these next:
|
|
22
|
+
|
|
23
|
+
- official vendor docs
|
|
24
|
+
- upstream repositories and release notes
|
|
25
|
+
- standards bodies and reference specs
|
|
26
|
+
- maintainer-authored examples
|
|
27
|
+
|
|
28
|
+
Prefer sources that expose:
|
|
29
|
+
|
|
30
|
+
- exact feature names
|
|
31
|
+
- current version constraints
|
|
32
|
+
- config formats
|
|
33
|
+
- dates or changelog context
|
|
34
|
+
|
|
35
|
+
When the topic is time-sensitive, capture the date you verified the source and the version or doc page involved.
|
|
36
|
+
|
|
37
|
+
## 3. Secondary / Community Sources
|
|
38
|
+
|
|
39
|
+
Use these only after primary evidence:
|
|
40
|
+
|
|
41
|
+
- Reddit threads
|
|
42
|
+
- issue comments
|
|
43
|
+
- independent blog posts
|
|
44
|
+
- forum discussions
|
|
45
|
+
- third-party comparison articles
|
|
46
|
+
|
|
47
|
+
Community evidence is useful for:
|
|
48
|
+
|
|
49
|
+
- practical gotchas
|
|
50
|
+
- migration pain points
|
|
51
|
+
- missing-doc workarounds
|
|
52
|
+
- real-world adoption patterns
|
|
53
|
+
|
|
54
|
+
Community evidence is not enough on its own for authoritative claims about product behavior, supported configuration, or security guarantees.
|
|
55
|
+
|
|
56
|
+
## 4. Conflict Handling
|
|
57
|
+
|
|
58
|
+
When sources disagree:
|
|
59
|
+
|
|
60
|
+
1. Prefer repo evidence for the current codebase state.
|
|
61
|
+
2. Prefer official docs over community claims for product behavior.
|
|
62
|
+
3. Prefer newer dated material when the sources cover the same feature.
|
|
63
|
+
4. If the conflict remains unresolved, report it as a gap instead of guessing.
|
|
64
|
+
|
|
65
|
+
## 5. Evidence Labels
|
|
66
|
+
|
|
67
|
+
Use these labels in research output:
|
|
68
|
+
|
|
69
|
+
- **Verified fact** — backed by repo evidence or a primary source
|
|
70
|
+
- **Secondary evidence** — backed only by community or indirect sources
|
|
71
|
+
- **Inference** — reasoned conclusion not directly stated by a source
|
|
72
|
+
- **Gap** — could not be verified confidently
|
|
73
|
+
|
|
74
|
+
## 6. Stop Conditions
|
|
75
|
+
|
|
76
|
+
Stop researching when:
|
|
77
|
+
|
|
78
|
+
- the decision is already clear
|
|
79
|
+
- new sources only repeat the same point
|
|
80
|
+
- the remaining uncertainty is small and clearly documented
|
|
81
|
+
- the task should move into implementation or planning
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "cubis-foundry-skill-audit-v1",
|
|
3
3
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
4
4
|
"summary": {
|
|
5
|
-
"keep":
|
|
5
|
+
"keep": 69,
|
|
6
6
|
"review": 0,
|
|
7
7
|
"alias-only": 0
|
|
8
8
|
},
|
|
@@ -61,6 +61,15 @@
|
|
|
61
61
|
"tier": "system",
|
|
62
62
|
"reason": "Canonical skill remains active in the layered catalog."
|
|
63
63
|
},
|
|
64
|
+
{
|
|
65
|
+
"id": "deep-research",
|
|
66
|
+
"canonical_id": "deep-research",
|
|
67
|
+
"status": "keep",
|
|
68
|
+
"layer": "core-operating",
|
|
69
|
+
"category": "core-operating",
|
|
70
|
+
"tier": "experimental",
|
|
71
|
+
"reason": "Canonical skill remains active in the layered catalog."
|
|
72
|
+
},
|
|
64
73
|
{
|
|
65
74
|
"id": "django-drf",
|
|
66
75
|
"canonical_id": "django-drf",
|
|
@@ -620,5 +629,5 @@
|
|
|
620
629
|
"reason": "Canonical skill remains active in the layered catalog."
|
|
621
630
|
}
|
|
622
631
|
],
|
|
623
|
-
"contentHash": "
|
|
632
|
+
"contentHash": "101f661a3eeb90cd"
|
|
624
633
|
}
|