contextos-agents 1.5.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/.agents/AGENTS.md +421 -0
- package/.agents/adapters/aider/export.js +137 -0
- package/.agents/adapters/claude/export.js +55 -0
- package/.agents/adapters/copilot/export.js +107 -0
- package/.agents/adapters/cursor/export.js +210 -0
- package/.agents/adapters/gemini/export.js +115 -0
- package/.agents/adapters/shared.js +119 -0
- package/.agents/adapters/zed/export.js +111 -0
- package/.agents/core/profiles/backend.yaml +47 -0
- package/.agents/core/profiles/enterprise.yaml +46 -0
- package/.agents/core/profiles/frontend.yaml +46 -0
- package/.agents/core/profiles/hackathon.yaml +45 -0
- package/.agents/core/profiles/mvp.yaml +43 -0
- package/.agents/core/profiles/startup.yaml +48 -0
- package/.agents/core/skills/adapters/EXAMPLES.md +19 -0
- package/.agents/core/skills/adapters/SKILL.md +105 -0
- package/.agents/core/skills/adapters/TROUBLESHOOTING.md +7 -0
- package/.agents/core/skills/adapters/VALIDATION.json +12 -0
- package/.agents/core/skills/adapters/skill.yaml +10 -0
- package/.agents/core/skills/architecture-diagrams/SKILL.md +108 -0
- package/.agents/core/skills/architecture-diagrams/VALIDATION.json +12 -0
- package/.agents/core/skills/architecture-diagrams/skill.yaml +8 -0
- package/.agents/core/skills/brutalist-design/SKILL.md +150 -0
- package/.agents/core/skills/brutalist-design/VALIDATION.json +12 -0
- package/.agents/core/skills/brutalist-design/skill.yaml +8 -0
- package/.agents/core/skills/context-manager/EXAMPLES.md +19 -0
- package/.agents/core/skills/context-manager/SKILL.md +126 -0
- package/.agents/core/skills/context-manager/TROUBLESHOOTING.md +7 -0
- package/.agents/core/skills/context-manager/VALIDATION.json +12 -0
- package/.agents/core/skills/context-manager/skill.yaml +10 -0
- package/.agents/core/skills/context-os/EXAMPLES.md +21 -0
- package/.agents/core/skills/context-os/SKILL.md +169 -0
- package/.agents/core/skills/context-os/TROUBLESHOOTING.md +7 -0
- package/.agents/core/skills/context-os/VALIDATION.json +12 -0
- package/.agents/core/skills/context-os/packs.yaml +59 -0
- package/.agents/core/skills/context-os/references/context-rules.md +68 -0
- package/.agents/core/skills/context-os/references/pipeline.md +119 -0
- package/.agents/core/skills/context-os/references/project-graph.md +103 -0
- package/.agents/core/skills/context-os/rules.yaml +135 -0
- package/.agents/core/skills/context-os/skill.yaml +10 -0
- package/.agents/core/skills/database/EXAMPLES.md +74 -0
- package/.agents/core/skills/database/SKILL.md +101 -0
- package/.agents/core/skills/database/TROUBLESHOOTING.md +18 -0
- package/.agents/core/skills/database/VALIDATION.json +11 -0
- package/.agents/core/skills/database/skill.yaml +25 -0
- package/.agents/core/skills/ddd/EXAMPLES.md +42 -0
- package/.agents/core/skills/ddd/SKILL.md +247 -0
- package/.agents/core/skills/ddd/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/ddd/VALIDATION.json +12 -0
- package/.agents/core/skills/ddd/ddd.md +178 -0
- package/.agents/core/skills/ddd/skill.yaml +10 -0
- package/.agents/core/skills/decisions/EXAMPLES.md +35 -0
- package/.agents/core/skills/decisions/SKILL.md +90 -0
- package/.agents/core/skills/decisions/TROUBLESHOOTING.md +13 -0
- package/.agents/core/skills/decisions/VALIDATION.json +12 -0
- package/.agents/core/skills/decisions/skill.yaml +10 -0
- package/.agents/core/skills/docker/EXAMPLES.md +56 -0
- package/.agents/core/skills/docker/SKILL.md +63 -0
- package/.agents/core/skills/docker/TROUBLESHOOTING.md +18 -0
- package/.agents/core/skills/docker/VALIDATION.json +11 -0
- package/.agents/core/skills/docker/skill.yaml +23 -0
- package/.agents/core/skills/engineering-workflow/EXAMPLES.md +57 -0
- package/.agents/core/skills/engineering-workflow/SKILL.md +343 -0
- package/.agents/core/skills/engineering-workflow/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/engineering-workflow/VALIDATION.json +12 -0
- package/.agents/core/skills/engineering-workflow/skill.yaml +13 -0
- package/.agents/core/skills/fastapi/EXAMPLES.md +36 -0
- package/.agents/core/skills/fastapi/SKILL.md +148 -0
- package/.agents/core/skills/fastapi/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/fastapi/VALIDATION.json +12 -0
- package/.agents/core/skills/fastapi/fastapi.md +112 -0
- package/.agents/core/skills/fastapi/skill.yaml +10 -0
- package/.agents/core/skills/gemini-precision/SKILL.md +169 -0
- package/.agents/core/skills/gemini-precision/VALIDATION.json +12 -0
- package/.agents/core/skills/gemini-precision/skill.yaml +9 -0
- package/.agents/core/skills/generators/EXAMPLES.md +19 -0
- package/.agents/core/skills/generators/SKILL.md +112 -0
- package/.agents/core/skills/generators/TROUBLESHOOTING.md +7 -0
- package/.agents/core/skills/generators/VALIDATION.json +12 -0
- package/.agents/core/skills/generators/skill.yaml +10 -0
- package/.agents/core/skills/generators/templates/API.md +77 -0
- package/.agents/core/skills/generators/templates/ARCHITECTURE.md +70 -0
- package/.agents/core/skills/generators/templates/DATABASE.md +42 -0
- package/.agents/core/skills/generators/templates/DECISION.md +46 -0
- package/.agents/core/skills/generators/templates/PRD.md +67 -0
- package/.agents/core/skills/generators/templates/PROJECT_GRAPH.md +56 -0
- package/.agents/core/skills/generators/templates/ROADMAP.md +51 -0
- package/.agents/core/skills/generators/templates/TASKS.md +43 -0
- package/.agents/core/skills/generators/templates/UI.md +73 -0
- package/.agents/core/skills/graphify/EXAMPLES.md +73 -0
- package/.agents/core/skills/graphify/SKILL.md +130 -0
- package/.agents/core/skills/graphify/VALIDATION.json +12 -0
- package/.agents/core/skills/graphify/skill.yaml +13 -0
- package/.agents/core/skills/gstack-roles/EXAMPLES.md +23 -0
- package/.agents/core/skills/gstack-roles/SKILL.md +152 -0
- package/.agents/core/skills/gstack-roles/TROUBLESHOOTING.md +13 -0
- package/.agents/core/skills/gstack-roles/VALIDATION.json +12 -0
- package/.agents/core/skills/gstack-roles/skill.yaml +12 -0
- package/.agents/core/skills/impeccable-design/EXAMPLES.md +26 -0
- package/.agents/core/skills/impeccable-design/SKILL.md +201 -0
- package/.agents/core/skills/impeccable-design/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/impeccable-design/VALIDATION.json +12 -0
- package/.agents/core/skills/impeccable-design/skill.yaml +14 -0
- package/.agents/core/skills/interview-me/SKILL.md +97 -0
- package/.agents/core/skills/interview-me/VALIDATION.json +12 -0
- package/.agents/core/skills/interview-me/skill.yaml +8 -0
- package/.agents/core/skills/microservices/EXAMPLES.md +38 -0
- package/.agents/core/skills/microservices/SKILL.md +164 -0
- package/.agents/core/skills/microservices/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/microservices/VALIDATION.json +12 -0
- package/.agents/core/skills/microservices/microservices.md +119 -0
- package/.agents/core/skills/microservices/skill.yaml +10 -0
- package/.agents/core/skills/minimalist-design/SKILL.md +113 -0
- package/.agents/core/skills/minimalist-design/VALIDATION.json +12 -0
- package/.agents/core/skills/minimalist-design/skill.yaml +8 -0
- package/.agents/core/skills/nestjs/EXAMPLES.md +40 -0
- package/.agents/core/skills/nestjs/SKILL.md +139 -0
- package/.agents/core/skills/nestjs/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/nestjs/VALIDATION.json +12 -0
- package/.agents/core/skills/nestjs/nestjs.md +103 -0
- package/.agents/core/skills/nestjs/skill.yaml +10 -0
- package/.agents/core/skills/nextjs/EXAMPLES.md +40 -0
- package/.agents/core/skills/nextjs/SKILL.md +163 -0
- package/.agents/core/skills/nextjs/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/nextjs/VALIDATION.json +12 -0
- package/.agents/core/skills/nextjs/nextjs.md +67 -0
- package/.agents/core/skills/nextjs/skill.yaml +10 -0
- package/.agents/core/skills/node/EXAMPLES.md +80 -0
- package/.agents/core/skills/node/SKILL.md +128 -0
- package/.agents/core/skills/node/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/node/VALIDATION.json +12 -0
- package/.agents/core/skills/node/node.md +87 -0
- package/.agents/core/skills/node/skill.yaml +10 -0
- package/.agents/core/skills/performance/EXAMPLES.md +30 -0
- package/.agents/core/skills/performance/SKILL.md +75 -0
- package/.agents/core/skills/performance/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/performance/VALIDATION.json +12 -0
- package/.agents/core/skills/performance/performance.md +52 -0
- package/.agents/core/skills/performance/skill.yaml +10 -0
- package/.agents/core/skills/ponytail-mindset/EXAMPLES.md +45 -0
- package/.agents/core/skills/ponytail-mindset/SKILL.md +193 -0
- package/.agents/core/skills/ponytail-mindset/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/ponytail-mindset/VALIDATION.json +12 -0
- package/.agents/core/skills/ponytail-mindset/skill.yaml +14 -0
- package/.agents/core/skills/react/EXAMPLES.md +79 -0
- package/.agents/core/skills/react/SKILL.md +132 -0
- package/.agents/core/skills/react/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/react/VALIDATION.json +12 -0
- package/.agents/core/skills/react/react.md +93 -0
- package/.agents/core/skills/react/skill.yaml +10 -0
- package/.agents/core/skills/react-best-practices/SKILL.md +155 -0
- package/.agents/core/skills/react-best-practices/VALIDATION.json +12 -0
- package/.agents/core/skills/react-best-practices/skill.yaml +10 -0
- package/.agents/core/skills/redesign-audit/SKILL.md +117 -0
- package/.agents/core/skills/redesign-audit/VALIDATION.json +12 -0
- package/.agents/core/skills/redesign-audit/skill.yaml +8 -0
- package/.agents/core/skills/security/EXAMPLES.md +64 -0
- package/.agents/core/skills/security/SKILL.md +158 -0
- package/.agents/core/skills/security/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/security/VALIDATION.json +12 -0
- package/.agents/core/skills/security/security.md +106 -0
- package/.agents/core/skills/security/skill.yaml +10 -0
- package/.agents/core/skills/soft-design/SKILL.md +108 -0
- package/.agents/core/skills/soft-design/VALIDATION.json +12 -0
- package/.agents/core/skills/soft-design/skill.yaml +8 -0
- package/.agents/core/skills/state-management/EXAMPLES.md +56 -0
- package/.agents/core/skills/state-management/SKILL.md +48 -0
- package/.agents/core/skills/state-management/TROUBLESHOOTING.md +18 -0
- package/.agents/core/skills/state-management/VALIDATION.json +11 -0
- package/.agents/core/skills/state-management/skill.yaml +22 -0
- package/.agents/core/skills/subagent-orchestrator/SKILL.md +100 -0
- package/.agents/core/skills/subagent-orchestrator/VALIDATION.json +12 -0
- package/.agents/core/skills/subagent-orchestrator/skill.yaml +8 -0
- package/.agents/core/skills/system-design/EXAMPLES.md +75 -0
- package/.agents/core/skills/system-design/SKILL.md +419 -0
- package/.agents/core/skills/system-design/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/system-design/VALIDATION.json +12 -0
- package/.agents/core/skills/system-design/skill.yaml +13 -0
- package/.agents/core/skills/system-design/system-design.md +112 -0
- package/.agents/core/skills/testing/EXAMPLES.md +71 -0
- package/.agents/core/skills/testing/SKILL.md +70 -0
- package/.agents/core/skills/testing/TROUBLESHOOTING.md +18 -0
- package/.agents/core/skills/testing/VALIDATION.json +11 -0
- package/.agents/core/skills/testing/skill.yaml +26 -0
- package/.agents/core/skills/typescript/EXAMPLES.md +64 -0
- package/.agents/core/skills/typescript/SKILL.md +112 -0
- package/.agents/core/skills/typescript/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/typescript/VALIDATION.json +12 -0
- package/.agents/core/skills/typescript/skill.yaml +10 -0
- package/.agents/core/skills/typescript/typescript.md +71 -0
- package/.agents/core/skills/ui-design/EXAMPLES.md +21 -0
- package/.agents/core/skills/ui-design/SKILL.md +124 -0
- package/.agents/core/skills/ui-design/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/ui-design/VALIDATION.json +12 -0
- package/.agents/core/skills/ui-design/skill.yaml +10 -0
- package/.agents/core/skills/ui-design/ui.md +88 -0
- package/.agents/core/skills/ui-ux-pro/EXAMPLES.md +62 -0
- package/.agents/core/skills/ui-ux-pro/SKILL.md +375 -0
- package/.agents/core/skills/ui-ux-pro/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/ui-ux-pro/VALIDATION.json +12 -0
- package/.agents/core/skills/ui-ux-pro/skill.yaml +13 -0
- package/.agents/core/skills/ux-design/EXAMPLES.md +36 -0
- package/.agents/core/skills/ux-design/SKILL.md +116 -0
- package/.agents/core/skills/ux-design/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/ux-design/VALIDATION.json +12 -0
- package/.agents/core/skills/ux-design/skill.yaml +10 -0
- package/.agents/core/skills/ux-design/ux.md +80 -0
- package/.agents/core/skills/vercel-optimize/SKILL.md +83 -0
- package/.agents/core/skills/vercel-optimize/VALIDATION.json +12 -0
- package/.agents/core/skills/vercel-optimize/skill.yaml +10 -0
- package/.agents/core/skills/web-accessibility/EXAMPLES.md +39 -0
- package/.agents/core/skills/web-accessibility/SKILL.md +170 -0
- package/.agents/core/skills/web-accessibility/TROUBLESHOOTING.md +19 -0
- package/.agents/core/skills/web-accessibility/VALIDATION.json +12 -0
- package/.agents/core/skills/web-accessibility/accessibility.md +63 -0
- package/.agents/core/skills/web-accessibility/skill.yaml +10 -0
- package/.agents/ctx.js +370 -0
- package/.agents/generated/claude/skills/adapters/SKILL.md +126 -0
- package/.agents/generated/claude/skills/architecture-diagrams/SKILL.md +101 -0
- package/.agents/generated/claude/skills/brutalist-design/SKILL.md +145 -0
- package/.agents/generated/claude/skills/context-manager/SKILL.md +147 -0
- package/.agents/generated/claude/skills/context-os/SKILL.md +191 -0
- package/.agents/generated/claude/skills/database/SKILL.md +191 -0
- package/.agents/generated/claude/skills/ddd/SKILL.md +305 -0
- package/.agents/generated/claude/skills/decisions/SKILL.md +134 -0
- package/.agents/generated/claude/skills/docker/SKILL.md +135 -0
- package/.agents/generated/claude/skills/engineering-workflow/SKILL.md +414 -0
- package/.agents/generated/claude/skills/fastapi/SKILL.md +200 -0
- package/.agents/generated/claude/skills/gemini-precision/SKILL.md +161 -0
- package/.agents/generated/claude/skills/generators/SKILL.md +133 -0
- package/.agents/generated/claude/skills/graphify/SKILL.md +198 -0
- package/.agents/generated/claude/skills/gstack-roles/SKILL.md +184 -0
- package/.agents/generated/claude/skills/impeccable-design/SKILL.md +241 -0
- package/.agents/generated/claude/skills/interview-me/SKILL.md +90 -0
- package/.agents/generated/claude/skills/microservices/SKILL.md +218 -0
- package/.agents/generated/claude/skills/minimalist-design/SKILL.md +108 -0
- package/.agents/generated/claude/skills/nestjs/SKILL.md +195 -0
- package/.agents/generated/claude/skills/nextjs/SKILL.md +219 -0
- package/.agents/generated/claude/skills/node/SKILL.md +224 -0
- package/.agents/generated/claude/skills/performance/SKILL.md +121 -0
- package/.agents/generated/claude/skills/ponytail-mindset/SKILL.md +252 -0
- package/.agents/generated/claude/skills/react/SKILL.md +227 -0
- package/.agents/generated/claude/skills/react-best-practices/SKILL.md +146 -0
- package/.agents/generated/claude/skills/redesign-audit/SKILL.md +112 -0
- package/.agents/generated/claude/skills/security/SKILL.md +237 -0
- package/.agents/generated/claude/skills/soft-design/SKILL.md +103 -0
- package/.agents/generated/claude/skills/state-management/SKILL.md +120 -0
- package/.agents/generated/claude/skills/subagent-orchestrator/SKILL.md +93 -0
- package/.agents/generated/claude/skills/system-design/SKILL.md +507 -0
- package/.agents/generated/claude/skills/testing/SKILL.md +157 -0
- package/.agents/generated/claude/skills/typescript/SKILL.md +192 -0
- package/.agents/generated/claude/skills/ui-design/SKILL.md +161 -0
- package/.agents/generated/claude/skills/ui-ux-pro/SKILL.md +451 -0
- package/.agents/generated/claude/skills/ux-design/SKILL.md +168 -0
- package/.agents/generated/claude/skills/vercel-optimize/SKILL.md +76 -0
- package/.agents/generated/claude/skills/web-accessibility/SKILL.md +225 -0
- package/.agents/generated/gemini/skills/adapters/SKILL.md +135 -0
- package/.agents/generated/gemini/skills/architecture-diagrams/SKILL.md +107 -0
- package/.agents/generated/gemini/skills/brutalist-design/SKILL.md +151 -0
- package/.agents/generated/gemini/skills/context-manager/SKILL.md +156 -0
- package/.agents/generated/gemini/skills/context-os/SKILL.md +200 -0
- package/.agents/generated/gemini/skills/database/SKILL.md +200 -0
- package/.agents/generated/gemini/skills/ddd/SKILL.md +314 -0
- package/.agents/generated/gemini/skills/decisions/SKILL.md +143 -0
- package/.agents/generated/gemini/skills/docker/SKILL.md +144 -0
- package/.agents/generated/gemini/skills/engineering-workflow/SKILL.md +423 -0
- package/.agents/generated/gemini/skills/fastapi/SKILL.md +209 -0
- package/.agents/generated/gemini/skills/gemini-precision/SKILL.md +167 -0
- package/.agents/generated/gemini/skills/generators/SKILL.md +142 -0
- package/.agents/generated/gemini/skills/graphify/SKILL.md +205 -0
- package/.agents/generated/gemini/skills/gstack-roles/SKILL.md +193 -0
- package/.agents/generated/gemini/skills/impeccable-design/SKILL.md +250 -0
- package/.agents/generated/gemini/skills/interview-me/SKILL.md +96 -0
- package/.agents/generated/gemini/skills/microservices/SKILL.md +227 -0
- package/.agents/generated/gemini/skills/minimalist-design/SKILL.md +114 -0
- package/.agents/generated/gemini/skills/nestjs/SKILL.md +204 -0
- package/.agents/generated/gemini/skills/nextjs/SKILL.md +298 -0
- package/.agents/generated/gemini/skills/node/SKILL.md +323 -0
- package/.agents/generated/gemini/skills/performance/SKILL.md +185 -0
- package/.agents/generated/gemini/skills/ponytail-mindset/SKILL.md +261 -0
- package/.agents/generated/gemini/skills/react/SKILL.md +332 -0
- package/.agents/generated/gemini/skills/react-best-practices/SKILL.md +152 -0
- package/.agents/generated/gemini/skills/redesign-audit/SKILL.md +118 -0
- package/.agents/generated/gemini/skills/security/SKILL.md +355 -0
- package/.agents/generated/gemini/skills/soft-design/SKILL.md +109 -0
- package/.agents/generated/gemini/skills/state-management/SKILL.md +129 -0
- package/.agents/generated/gemini/skills/subagent-orchestrator/SKILL.md +99 -0
- package/.agents/generated/gemini/skills/system-design/SKILL.md +631 -0
- package/.agents/generated/gemini/skills/testing/SKILL.md +166 -0
- package/.agents/generated/gemini/skills/typescript/SKILL.md +275 -0
- package/.agents/generated/gemini/skills/ui-design/SKILL.md +170 -0
- package/.agents/generated/gemini/skills/ui-ux-pro/SKILL.md +460 -0
- package/.agents/generated/gemini/skills/ux-design/SKILL.md +177 -0
- package/.agents/generated/gemini/skills/vercel-optimize/SKILL.md +82 -0
- package/.agents/generated/gemini/skills/web-accessibility/SKILL.md +300 -0
- package/.agents/mcp/runtime.py +454 -0
- package/.agents/mcp/server.mjs +189373 -0
- package/.agents/plugins.js +574 -0
- package/.agents/profiles.js +267 -0
- package/.agents/resolver.js +336 -0
- package/.agents/skills-index.json +200 -0
- package/.agents/skills.json +6 -0
- package/.agents/validate.js +500 -0
- package/LICENSE +21 -0
- package/README.md +415 -0
- package/benchmarks/gemini-issues.js +533 -0
- package/bin/index.js +458 -0
- package/package.json +70 -0
- package/registry.json +53 -0
- package/registry.schema.json +32 -0
package/.agents/ctx.js
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .agents/ctx.js
|
|
3
|
+
* ContextOS — Main CLI Dispatcher and Context Engine
|
|
4
|
+
*
|
|
5
|
+
* Provides subcommands for:
|
|
6
|
+
* - export: compiling skills for diverse agent formats (Gemini, Claude, Cursor, Copilot, Aider, Zed)
|
|
7
|
+
* - profile: managing project profiles (list, show, apply, remove)
|
|
8
|
+
* - resolve: dynamic on-demand skill resolution for prompts and file lists
|
|
9
|
+
* - index: progressive skills index generation
|
|
10
|
+
* - detect: tech stack detection
|
|
11
|
+
* - validate / audit: skill source, frontmatter, and sync validation
|
|
12
|
+
* - skill: plugin management (add, remove, list, search)
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const process = require('process');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
|
|
18
|
+
const args = process.argv.slice(2);
|
|
19
|
+
|
|
20
|
+
if (args.length === 0) {
|
|
21
|
+
printHelp();
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Prints usage instructions and supported CLI commands.
|
|
27
|
+
*/
|
|
28
|
+
function printHelp() {
|
|
29
|
+
console.log('Usage: node ctx.js <command> [args...]');
|
|
30
|
+
console.log('');
|
|
31
|
+
console.log('Commands:');
|
|
32
|
+
console.log(' export gemini [--profile <p>] Compile skills for Gemini / Antigravity');
|
|
33
|
+
console.log(' export claude [--profile <p>] Compile skills for Claude Code');
|
|
34
|
+
console.log(' export cursor [--profile <p>] Compile skills → .cursorrules & .cursor/rules/*.mdc');
|
|
35
|
+
console.log(' export copilot [--profile <p>] Compile skills → .github/copilot-instructions.md');
|
|
36
|
+
console.log(' export aider [--profile <p>] Compile skills → .aider.conf.yml + CONVENTIONS.md');
|
|
37
|
+
console.log(' export zed [--profile <p>] Compile skills → .zed/rules.md & .zed/prompts/*.md');
|
|
38
|
+
console.log(' export all [--profile <p>] Compile skills for all supported agents');
|
|
39
|
+
console.log(' profile list List available project profiles');
|
|
40
|
+
console.log(' profile show <name> Show profile configuration');
|
|
41
|
+
console.log(' profile apply <name> Apply a profile (e.g. mvp, startup, enterprise, frontend)');
|
|
42
|
+
console.log(' profile remove Remove active profile filter');
|
|
43
|
+
console.log(' resolve <prompt> Resolve minimal skills needed for a task');
|
|
44
|
+
console.log(' index Generate progressive skills-index.json');
|
|
45
|
+
console.log(' detect Auto-detect project tech stack');
|
|
46
|
+
console.log(' audit Alias for validate (check skills)');
|
|
47
|
+
console.log(' validate Validate skill sources, frontmatter, deps & sync');
|
|
48
|
+
console.log(' clean-worktrees Clean up lingering .swarm-worktrees and swarm/* branches');
|
|
49
|
+
console.log(' install-skill <ref> Alias for skill add (install a plugin)');
|
|
50
|
+
console.log(' skill add <ref> Install a plugin skill (GitHub or npm)');
|
|
51
|
+
console.log(' skill remove <name> Uninstall a plugin skill');
|
|
52
|
+
console.log(' skill list List installed skills (builtin + plugins)');
|
|
53
|
+
console.log(' skill search [query] Search the community skill registry');
|
|
54
|
+
console.log('');
|
|
55
|
+
console.log('Plugin ref formats:');
|
|
56
|
+
console.log(' username/repo GitHub repo root SKILL.md');
|
|
57
|
+
console.log(' username/repo@commit GitHub repo pinned to a commit');
|
|
58
|
+
console.log(' username/repo/path/to/skill GitHub subpath skill');
|
|
59
|
+
console.log(' npm-package-name npm package');
|
|
60
|
+
console.log(' @scope/npm-package scoped npm package');
|
|
61
|
+
console.log('');
|
|
62
|
+
console.log('Examples:');
|
|
63
|
+
console.log(' node .agents/ctx.js resolve "Build an accessible modal component"');
|
|
64
|
+
console.log(' node .agents/ctx.js profile list');
|
|
65
|
+
console.log(' node .agents/ctx.js profile apply mvp');
|
|
66
|
+
console.log(' node .agents/ctx.js detect');
|
|
67
|
+
console.log(' node .agents/ctx.js export all --profile frontend');
|
|
68
|
+
console.log(' node .agents/ctx.js skill add alice/my-cool-skill');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ── Helper: parse checksum flag ─────────────────────────────────────────────
|
|
72
|
+
function extractChecksum(argv) {
|
|
73
|
+
for (let i = 0; i < argv.length; i++) {
|
|
74
|
+
if (argv[i].startsWith('--checksum=')) {
|
|
75
|
+
return argv[i].split('=')[1];
|
|
76
|
+
}
|
|
77
|
+
if (argv[i] === '--checksum' && argv[i + 1] && !argv[i + 1].startsWith('--')) {
|
|
78
|
+
return argv[i + 1];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const command = args[0];
|
|
85
|
+
const target = args[1];
|
|
86
|
+
|
|
87
|
+
// ── export ────────────────────────────────────────────────────────────────────
|
|
88
|
+
if (command === 'export') {
|
|
89
|
+
const profileFlagIdx = args.indexOf('--profile');
|
|
90
|
+
if (profileFlagIdx !== -1 && args[profileFlagIdx + 1]) {
|
|
91
|
+
const profiles = require('./profiles.js');
|
|
92
|
+
const profileName = args[profileFlagIdx + 1];
|
|
93
|
+
try {
|
|
94
|
+
profiles.applyProfile(profileName);
|
|
95
|
+
console.log(`[PROFILE] Applied profile '${profileName}' for this export.\n`);
|
|
96
|
+
} catch (err) {
|
|
97
|
+
console.error(`[ERROR] ${err.message}`);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const runGemini = () => {
|
|
103
|
+
const adapter = require('./adapters/gemini/export.js');
|
|
104
|
+
adapter.run();
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const runClaude = () => {
|
|
108
|
+
const adapter = require('./adapters/claude/export.js');
|
|
109
|
+
adapter.run();
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const runCursor = () => {
|
|
113
|
+
const adapter = require('./adapters/cursor/export.js');
|
|
114
|
+
adapter.run();
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const runCopilot = () => {
|
|
118
|
+
const adapter = require('./adapters/copilot/export.js');
|
|
119
|
+
adapter.run();
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const runAider = () => {
|
|
123
|
+
const adapter = require('./adapters/aider/export.js');
|
|
124
|
+
adapter.run();
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const runZed = () => {
|
|
128
|
+
const adapter = require('./adapters/zed/export.js');
|
|
129
|
+
adapter.run();
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
if (target === 'gemini') {
|
|
133
|
+
runGemini();
|
|
134
|
+
} else if (target === 'claude') {
|
|
135
|
+
runClaude();
|
|
136
|
+
} else if (target === 'cursor') {
|
|
137
|
+
runCursor();
|
|
138
|
+
} else if (target === 'copilot') {
|
|
139
|
+
runCopilot();
|
|
140
|
+
} else if (target === 'aider') {
|
|
141
|
+
runAider();
|
|
142
|
+
} else if (target === 'zed') {
|
|
143
|
+
runZed();
|
|
144
|
+
} else if (target === 'all') {
|
|
145
|
+
console.log('Exporting skills for all agents...\n');
|
|
146
|
+
runGemini();
|
|
147
|
+
console.log('');
|
|
148
|
+
runClaude();
|
|
149
|
+
console.log('');
|
|
150
|
+
runCursor();
|
|
151
|
+
console.log('');
|
|
152
|
+
runCopilot();
|
|
153
|
+
console.log('');
|
|
154
|
+
runAider();
|
|
155
|
+
console.log('');
|
|
156
|
+
runZed();
|
|
157
|
+
console.log('\nAll exports complete.');
|
|
158
|
+
} else {
|
|
159
|
+
console.error(`Adapter for '${target}' not implemented yet.`);
|
|
160
|
+
console.error('Supported agents: gemini, claude, cursor, copilot, aider, zed, all');
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// ── profile ───────────────────────────────────────────────────────────────────
|
|
165
|
+
} else if (command === 'profile') {
|
|
166
|
+
const subcommand = args[1] || 'list';
|
|
167
|
+
const profileName = args[2];
|
|
168
|
+
const profiles = require('./profiles.js');
|
|
169
|
+
|
|
170
|
+
if (subcommand === 'list') {
|
|
171
|
+
const list = profiles.listProfiles();
|
|
172
|
+
const active = profiles.getActiveProfile();
|
|
173
|
+
console.log('\nAvailable ContextOS Profiles:\n');
|
|
174
|
+
for (const p of list) {
|
|
175
|
+
const isActive = active && active.profile === p.id;
|
|
176
|
+
const marker = isActive ? '● [ACTIVE]' : '○';
|
|
177
|
+
console.log(` ${marker} ${p.id.padEnd(12)} - ${p.name}: ${p.description}`);
|
|
178
|
+
if (p.exclude_skills && p.exclude_skills.length > 0) {
|
|
179
|
+
console.log(` Excludes: ${p.exclude_skills.join(', ')}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
console.log('\nApply a profile: node .agents/ctx.js profile apply <name>');
|
|
183
|
+
if (active) {
|
|
184
|
+
console.log(`Current active profile: ${active.profile} (${active.name})`);
|
|
185
|
+
}
|
|
186
|
+
console.log('');
|
|
187
|
+
} else if (subcommand === 'show') {
|
|
188
|
+
const name = profileName || (profiles.getActiveProfile() || {}).profile;
|
|
189
|
+
if (!name) {
|
|
190
|
+
console.error('[ERROR] Usage: node ctx.js profile show <name>');
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
const profile = profiles.getProfile(name);
|
|
194
|
+
if (!profile) {
|
|
195
|
+
console.error(`[ERROR] Profile '${name}' not found.`);
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
console.log(`\nProfile: ${profile.name} (${profile.id})`);
|
|
199
|
+
console.log(`Description: ${profile.description}`);
|
|
200
|
+
console.log(`Preferred Skills: ${(profile.prefer_skills || []).join(', ') || 'none'}`);
|
|
201
|
+
console.log(`Excluded Skills: ${(profile.exclude_skills || []).join(', ') || 'none'}\n`);
|
|
202
|
+
} else if (subcommand === 'apply') {
|
|
203
|
+
if (!profileName) {
|
|
204
|
+
console.error('[ERROR] Usage: node ctx.js profile apply <name>');
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
const applied = profiles.applyProfile(profileName);
|
|
209
|
+
console.log(`\n✓ Profile '${applied.name}' successfully applied!`);
|
|
210
|
+
console.log(` Excluded skills: ${(applied.exclude_skills || []).join(', ') || 'none'}`);
|
|
211
|
+
console.log(' Run: node .agents/ctx.js export all (to rebuild exports with this profile)\n');
|
|
212
|
+
} catch (err) {
|
|
213
|
+
console.error(`[ERROR] ${err.message}`);
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
} else if (subcommand === 'remove' || subcommand === 'reset') {
|
|
217
|
+
const removed = profiles.removeActiveProfile();
|
|
218
|
+
if (removed) {
|
|
219
|
+
console.log('\n✓ Active profile filter removed. All skills will be included.\n');
|
|
220
|
+
} else {
|
|
221
|
+
console.log('\nNo active profile was set.\n');
|
|
222
|
+
}
|
|
223
|
+
} else {
|
|
224
|
+
console.error(`Unknown profile subcommand: ${subcommand}`);
|
|
225
|
+
console.error('Valid subcommands: list, show, apply, remove');
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// ── resolve ───────────────────────────────────────────────────────────────────
|
|
230
|
+
} else if (command === 'resolve') {
|
|
231
|
+
const resolver = require('./resolver.js');
|
|
232
|
+
const promptArgs = args.slice(1).filter(a => !a.startsWith('-')).join(' ');
|
|
233
|
+
const filesIdx = args.indexOf('--files');
|
|
234
|
+
const files = filesIdx !== -1 && args[filesIdx + 1] ? args[filesIdx + 1].split(',') : [];
|
|
235
|
+
const phaseIdx = args.indexOf('--phase');
|
|
236
|
+
const phase = phaseIdx !== -1 && args[phaseIdx + 1] ? args[phaseIdx + 1] : 'Build';
|
|
237
|
+
|
|
238
|
+
const result = resolver.resolveSkills({ prompt: promptArgs, files, phase });
|
|
239
|
+
console.log('\n══════════════════════════════════════════');
|
|
240
|
+
console.log(' ContextOS — Dynamic Skill Resolution');
|
|
241
|
+
console.log('══════════════════════════════════════════');
|
|
242
|
+
console.log(resolver.formatDeclaration(result));
|
|
243
|
+
console.log('──────────────────────────────────────────\n');
|
|
244
|
+
|
|
245
|
+
// ── index ─────────────────────────────────────────────────────────────────────
|
|
246
|
+
} else if (command === 'index') {
|
|
247
|
+
const resolver = require('./resolver.js');
|
|
248
|
+
const index = resolver.buildSkillIndex(process.cwd());
|
|
249
|
+
const fs = require('fs');
|
|
250
|
+
const indexPath = path.join(process.cwd(), '.agents', 'skills-index.json');
|
|
251
|
+
fs.writeFileSync(indexPath, JSON.stringify({ version: '1.0.0', skills: index }, null, 2) + '\n');
|
|
252
|
+
console.log(`\nGenerated progressive skills index with ${index.length} skills → .agents/skills-index.json\n`);
|
|
253
|
+
|
|
254
|
+
// ── detect ────────────────────────────────────────────────────────────────────
|
|
255
|
+
} else if (command === 'detect') {
|
|
256
|
+
const profiles = require('./profiles.js');
|
|
257
|
+
const detection = profiles.detectStack(process.cwd());
|
|
258
|
+
console.log('\nContextOS — Tech Stack Detection\n');
|
|
259
|
+
if (detection.detected.length === 0) {
|
|
260
|
+
console.log(' Detected stack: Generic / Vanilla JavaScript');
|
|
261
|
+
} else {
|
|
262
|
+
console.log(` Detected stack: ${detection.detected.join(', ')}`);
|
|
263
|
+
}
|
|
264
|
+
console.log(` Recommended Profile: ${detection.recommendedProfile}`);
|
|
265
|
+
console.log(` Recommended Skills: ${detection.recommendedSkills.join(', ')}`);
|
|
266
|
+
console.log(`\nApply recommended profile:\n node .agents/ctx.js profile apply ${detection.recommendedProfile}\n`);
|
|
267
|
+
|
|
268
|
+
// ── validate / audit ──────────────────────────────────────────────────────────
|
|
269
|
+
} else if (command === 'validate' || command === 'audit') {
|
|
270
|
+
const validator = require('./validate.js');
|
|
271
|
+
validator.run();
|
|
272
|
+
|
|
273
|
+
// ── install-skill ─────────────────────────────────────────────────────────────
|
|
274
|
+
} else if (command === 'install-skill') {
|
|
275
|
+
const ref = args[1];
|
|
276
|
+
const dryRun = args.includes('--dry-run');
|
|
277
|
+
const checksum = extractChecksum(args);
|
|
278
|
+
const plugins = require('./plugins.js');
|
|
279
|
+
|
|
280
|
+
if (!ref) {
|
|
281
|
+
console.error('[ERROR] Usage: ctx.js install-skill <ref> [--checksum <sha256>]');
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
plugins.add(ref, { dryRun, checksum }).catch(err => {
|
|
286
|
+
console.error(`[ERROR] ${err.message}`);
|
|
287
|
+
process.exit(1);
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
// ── skill ─────────────────────────────────────────────────────────────────────
|
|
291
|
+
} else if (command === 'skill') {
|
|
292
|
+
const subcommand = args[1];
|
|
293
|
+
const ref = args[2];
|
|
294
|
+
const dryRun = args.includes('--dry-run');
|
|
295
|
+
const checksum = extractChecksum(args);
|
|
296
|
+
const plugins = require('./plugins.js');
|
|
297
|
+
|
|
298
|
+
if (!subcommand || subcommand === 'help') {
|
|
299
|
+
printHelp();
|
|
300
|
+
process.exit(0);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
if (subcommand === 'add') {
|
|
304
|
+
plugins.add(ref, { dryRun, checksum }).catch(err => {
|
|
305
|
+
console.error(`[ERROR] ${err.message}`);
|
|
306
|
+
process.exit(1);
|
|
307
|
+
});
|
|
308
|
+
} else if (subcommand === 'remove') {
|
|
309
|
+
plugins.remove(ref);
|
|
310
|
+
} else if (subcommand === 'list') {
|
|
311
|
+
plugins.list();
|
|
312
|
+
} else if (subcommand === 'search') {
|
|
313
|
+
const query = args.slice(2).join(' ');
|
|
314
|
+
plugins.search(query).catch(err => {
|
|
315
|
+
console.error(`[ERROR] ${err.message}`);
|
|
316
|
+
process.exit(1);
|
|
317
|
+
});
|
|
318
|
+
} else {
|
|
319
|
+
console.error(`Unknown skill subcommand: ${subcommand}`);
|
|
320
|
+
console.error('Valid subcommands: add, remove, list, search');
|
|
321
|
+
process.exit(1);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// ── clean-worktrees ──────────────────────────────────────────────────────────
|
|
325
|
+
} else if (command === 'clean-worktrees' || command === 'clean') {
|
|
326
|
+
const { execSync } = require('child_process');
|
|
327
|
+
const fs = require('fs');
|
|
328
|
+
const path = require('path');
|
|
329
|
+
const rootDir = path.resolve(__dirname, '..');
|
|
330
|
+
const wtDir = path.join(rootDir, '.swarm-worktrees');
|
|
331
|
+
|
|
332
|
+
console.log('Cleaning up ContextOS swarm worktrees and branches...');
|
|
333
|
+
try {
|
|
334
|
+
execSync('git worktree prune', { cwd: rootDir, stdio: 'pipe' });
|
|
335
|
+
} catch {}
|
|
336
|
+
|
|
337
|
+
let branchCount = 0;
|
|
338
|
+
try {
|
|
339
|
+
const branches = execSync('git branch --list "swarm/*"', { cwd: rootDir, encoding: 'utf-8' });
|
|
340
|
+
const list = branches.split('\n').map(b => b.replace(/^[*+\s]+/, '').trim()).filter(Boolean);
|
|
341
|
+
for (const b of list) {
|
|
342
|
+
try {
|
|
343
|
+
execSync(`git branch -D "${b}"`, { cwd: rootDir, stdio: 'pipe' });
|
|
344
|
+
branchCount++;
|
|
345
|
+
} catch {}
|
|
346
|
+
}
|
|
347
|
+
} catch {}
|
|
348
|
+
|
|
349
|
+
let dirCount = 0;
|
|
350
|
+
if (fs.existsSync(wtDir)) {
|
|
351
|
+
try {
|
|
352
|
+
const entries = fs.readdirSync(wtDir);
|
|
353
|
+
for (const e of entries) {
|
|
354
|
+
const full = path.join(wtDir, e);
|
|
355
|
+
try {
|
|
356
|
+
fs.rmSync(full, { recursive: true, force: true });
|
|
357
|
+
dirCount++;
|
|
358
|
+
} catch {}
|
|
359
|
+
}
|
|
360
|
+
} catch {}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
console.log(`✓ Cleaned up ${dirCount} worktree directory(ies) and ${branchCount} swarm branch(es).`);
|
|
364
|
+
|
|
365
|
+
// ── unknown ───────────────────────────────────────────────────────────────────
|
|
366
|
+
} else {
|
|
367
|
+
console.error(`Unknown command: ${command}`);
|
|
368
|
+
console.error('Run: node ctx.js (no args) to see help');
|
|
369
|
+
process.exit(1);
|
|
370
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# agent-adapters
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Unified cross-agent configuration engine. Translates single ContextOS source rules into optimized native formats for Claude Code (CLAUDE.md), Gemini (.agents/skills), Cursor (.cursorrules, .cursor/rules/*.mdc), GitHub Copilot, Zed, Aider, and Continue.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
Activate when configuring, synchronizing, or exporting agent rules and skills across multiple IDEs and AI programming assistants.
|
|
10
|
+
|
|
11
|
+
## Rules & Patterns
|
|
12
|
+
|
|
13
|
+
ContextOS is agent-agnostic. This skill generates the right config format for any AI agent.
|
|
14
|
+
|
|
15
|
+
## Supported Agents
|
|
16
|
+
|
|
17
|
+
| Agent | Config File | Format |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| **Gemini** | `.agents/AGENTS.md` + `.agents/skills/` | Markdown + YAML skills |
|
|
20
|
+
| **Claude Code** | `CLAUDE.md` | Single markdown file |
|
|
21
|
+
| **GitHub Copilot / Codex** | `AGENTS.md` (root) | Markdown |
|
|
22
|
+
| **Cursor** | `.cursorrules` | Plain text rules |
|
|
23
|
+
| **Aider** | `.aider.conf.yml` | YAML config |
|
|
24
|
+
| **Continue** | `.continuerules` | Markdown rules |
|
|
25
|
+
| **OpenHands** | `openhands.json` | JSON config |
|
|
26
|
+
| **Roo Code** | `.roo/` | Directory with rules |
|
|
27
|
+
| **Windsurf** | `.windsurfrules` | Plain text rules |
|
|
28
|
+
|
|
29
|
+
## Generation Command
|
|
30
|
+
|
|
31
|
+
`ctx adapt [agent]` — Generate config for a specific agent.
|
|
32
|
+
|
|
33
|
+
`ctx adapt all` — Generate configs for all supported agents.
|
|
34
|
+
|
|
35
|
+
## Adapter Logic
|
|
36
|
+
|
|
37
|
+
### For Claude Code (`CLAUDE.md`)
|
|
38
|
+
|
|
39
|
+
Compile into a single markdown file:
|
|
40
|
+
|
|
41
|
+
1. Project overview from `docs/PRD.md` (summary only)
|
|
42
|
+
2. Architecture summary from `docs/ARCHITECTURE.md`
|
|
43
|
+
3. Coding rules from loaded skills
|
|
44
|
+
4. Active Decision Records
|
|
45
|
+
5. Current tasks from `docs/TASKS.md`
|
|
46
|
+
|
|
47
|
+
### For Gemini (`.agents/AGENTS.md`)
|
|
48
|
+
|
|
49
|
+
Already native format. Just ensure:
|
|
50
|
+
|
|
51
|
+
1. `AGENTS.md` references the skill directory
|
|
52
|
+
2. Skills have proper SKILL.md with frontmatter
|
|
53
|
+
3. Context Manager rules are in AGENTS.md
|
|
54
|
+
|
|
55
|
+
### For Cursor (`.cursorrules`)
|
|
56
|
+
|
|
57
|
+
Compile into a flat text file:
|
|
58
|
+
|
|
59
|
+
1. Project context (condensed)
|
|
60
|
+
2. Coding style rules
|
|
61
|
+
3. Framework-specific instructions
|
|
62
|
+
4. Anti-patterns to avoid
|
|
63
|
+
|
|
64
|
+
### For Aider (`.aider.conf.yml`)
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
read:
|
|
68
|
+
- docs/ARCHITECTURE.md
|
|
69
|
+
- docs/API.md
|
|
70
|
+
- docs/PROJECT_GRAPH.md
|
|
71
|
+
conventions:
|
|
72
|
+
- {{coding rules from skills}}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Sync Rules
|
|
76
|
+
|
|
77
|
+
- Adapters read from the canonical ContextOS documents
|
|
78
|
+
- Never edit adapter output files directly
|
|
79
|
+
- Re-run `ctx adapt` after any document change
|
|
80
|
+
- Each adapter file includes a header: `# Generated by ContextOS — do not edit directly`
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## Code Examples
|
|
84
|
+
|
|
85
|
+
See `EXAMPLES.md` for detailed code examples.
|
|
86
|
+
|
|
87
|
+
## Validation Checklist
|
|
88
|
+
|
|
89
|
+
What to verify during the review phase before completing the task.
|
|
90
|
+
|
|
91
|
+
## Common Mistakes
|
|
92
|
+
|
|
93
|
+
Anti-patterns and things to explicitly avoid. See `TROUBLESHOOTING.md`.
|
|
94
|
+
|
|
95
|
+
## Integration Notes
|
|
96
|
+
|
|
97
|
+
How this skill interacts with other skills.
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# adapters Examples — Anti-patterns vs ContextOS Standard
|
|
101
|
+
|
|
102
|
+
## Example 1: Multi-Agent Configuration
|
|
103
|
+
|
|
104
|
+
### Anti-pattern: Manually Syncing 6 Different Rule Files
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
Editing .cursorrules, then forgetting to update CLAUDE.md, then editing copilot-instructions.md.
|
|
108
|
+
Rules diverge across teammates using different IDEs.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Best practice: ContextOS Standard (Single Source of Truth)
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Edit skills once in .agents/core/skills/
|
|
115
|
+
# Compile to all agents with one command:
|
|
116
|
+
node .agents/ctx.js export all
|
|
117
|
+
# Automatically updates .cursorrules, CLAUDE.md, copilot-instructions.md, .aider, .zed
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
# adapters Troubleshooting & Common Mistakes
|
|
121
|
+
|
|
122
|
+
## 1. Overwriting Custom Configs
|
|
123
|
+
|
|
124
|
+
- **Symptom**: Custom non-ContextOS rules wiped out during export.
|
|
125
|
+
- **Root Cause**: Running export with force flags over unmanaged files.
|
|
126
|
+
- **Fix**: Keep custom project overrides in dedicated config files or use plugin skills.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# architecture-diagrams
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Visual architecture engineering skill inspired by [tt-a1i/archify](https://github.com/tt-a1i/archify). Replaces static ASCII art and rigid default diagrams with crisp, self-contained SVG and responsive HTML diagrams featuring modern dark-mode palettes, pulse animations for event flows, and strict C4-model component boundaries.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
Activate whenever:
|
|
10
|
+
|
|
11
|
+
- Designing or explaining distributed systems, microservices, or full-stack architectures.
|
|
12
|
+
- Visualizing complex auth flows (OAuth2, PKCE), multi-step payment sagas, or CDC outbox data pipelines.
|
|
13
|
+
- User requests an architecture diagram, flow chart, sequence diagram, or visual system design.
|
|
14
|
+
|
|
15
|
+
## Rules & Patterns
|
|
16
|
+
|
|
17
|
+
### 1. Diagram Types Supported
|
|
18
|
+
|
|
19
|
+
1. **System Landscape / C4 Container Diagram**:
|
|
20
|
+
- Clients (Web, Mobile, Third-party) → API Gateway / CDN → Microservices / Serverless → Storage / Event Brokers.
|
|
21
|
+
2. **Sequence Flow Diagram**:
|
|
22
|
+
- Step-by-step lifecycles with synchronous requests, asynchronous pub/sub events, and compensating transactions.
|
|
23
|
+
3. **Data Pipeline & Event-Driven Topology**:
|
|
24
|
+
- Primary DB → Transactional Outbox → CDC (Debezium) → Kafka Topic → Consumers → Materialized Views.
|
|
25
|
+
|
|
26
|
+
### 2. Aesthetic & Visual Invariants
|
|
27
|
+
|
|
28
|
+
- **Dark Theme by Default**: Surface `#0B0F19`, containers `#1E293B`, borders `#334155`, text `#F8FAFC`.
|
|
29
|
+
- **Semantic Component Accents**:
|
|
30
|
+
- Client / Frontend: Sky Blue (`#38BDF8`)
|
|
31
|
+
- API Gateway / Router: Indigo (`#818CF8`)
|
|
32
|
+
- Business Services: Emerald Green (`#34D399`)
|
|
33
|
+
- Databases / Storage: Amber / Orange (`#F59E0B`)
|
|
34
|
+
- Message Brokers / Event Buses: Purple (`#A855F7`)
|
|
35
|
+
- **Active Data-Flow Motion**: Use subtle CSS `@keyframes` on SVG stroke dashes (`stroke-dasharray`, `stroke-dashoffset`) to show active direction of messages and data streams.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Code Examples
|
|
40
|
+
|
|
41
|
+
### Standalone Animated SVG Data-Flow Pattern
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<svg viewBox="0 0 800 200" xmlns="http://www.w3.org/2000/svg" class="bg-slate-950 rounded-xl p-4 w-full">
|
|
45
|
+
<defs>
|
|
46
|
+
<style>
|
|
47
|
+
.flow-line { stroke: #38BDF8; stroke-width: 2; stroke-dasharray: 6,6; animation: flow 1.5s linear infinite; }
|
|
48
|
+
@keyframes flow { to { stroke-dashoffset: -12; } }
|
|
49
|
+
.box { fill: #1E293B; stroke: #334155; stroke-width: 1.5; rx: 8; }
|
|
50
|
+
.text-title { fill: #F8FAFC; font-family: sans-serif; font-size: 14px; font-weight: 600; }
|
|
51
|
+
.text-sub { fill: #94A3B8; font-family: monospace; font-size: 11px; }
|
|
52
|
+
</style>
|
|
53
|
+
</defs>
|
|
54
|
+
|
|
55
|
+
<!-- Client Node -->
|
|
56
|
+
<rect x="30" y="70" width="160" height="60" class="box" />
|
|
57
|
+
<text x="110" y="96" text-anchor="middle" class="text-title">Next.js Client</text>
|
|
58
|
+
<text x="110" y="114" text-anchor="middle" class="text-sub">React 19 / RSC</text>
|
|
59
|
+
|
|
60
|
+
<!-- Data Flow -->
|
|
61
|
+
<line x1="190" y1="100" x2="330" y2="100" class="flow-line" />
|
|
62
|
+
|
|
63
|
+
<!-- API Gateway -->
|
|
64
|
+
<rect x="330" y="70" width="160" height="60" class="box" />
|
|
65
|
+
<text x="410" y="96" text-anchor="middle" class="text-title">API Gateway</text>
|
|
66
|
+
<text x="410" y="114" text-anchor="middle" class="text-sub">Auth & Rate Limiting</text>
|
|
67
|
+
|
|
68
|
+
<!-- Flow to Database -->
|
|
69
|
+
<line x1="490" y1="100" x2="630" y2="100" class="flow-line" />
|
|
70
|
+
|
|
71
|
+
<!-- Database -->
|
|
72
|
+
<rect x="630" y="70" width="140" height="60" class="box" />
|
|
73
|
+
<text x="700" y="96" text-anchor="middle" class="text-title">PostgreSQL</text>
|
|
74
|
+
<text x="700" y="114" text-anchor="middle" class="text-sub">Prisma / Outbox</text>
|
|
75
|
+
</svg>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Validation Checklist
|
|
81
|
+
|
|
82
|
+
- [ ] Diagram clearly identifies all component boundaries, ports, and protocols.
|
|
83
|
+
- [ ] Visual hierarchy is unambiguous (clients on left/top, storage on right/bottom).
|
|
84
|
+
- [ ] Motion/animation is purposeful and lightweight (no heavy canvas frameworks).
|
|
85
|
+
- [ ] Accessible: nodes include semantic labels and readable color contrast.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Common Mistakes
|
|
90
|
+
|
|
91
|
+
- **Messy cross-overs**: Laying out 20 boxes with overlapping lines instead of grouping into clean C4 layers.
|
|
92
|
+
- **Unlabeled connections**: Lines without protocol (HTTPS, gRPC, WSS) or event payload descriptions.
|
|
93
|
+
- **Overwhelming detail**: Drawing internal class diagrams when the user asked for a system-level overview.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Integration Notes
|
|
98
|
+
|
|
99
|
+
- Triggers during `system-design` and `microservices` planning phases.
|
|
100
|
+
- Used to generate visual architecture artifacts in Markdown walkthroughs and specs.
|
|
101
|
+
- Pairs with `ui-ux-pro` for consistent aesthetic styling.
|