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/bin/index.js
ADDED
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { version } = require('../package.json');
|
|
6
|
+
const profiles = require('../.agents/profiles.js');
|
|
7
|
+
|
|
8
|
+
// ── CLI argument parsing ──────────────────────────────────────────────────────
|
|
9
|
+
const args = process.argv.slice(2);
|
|
10
|
+
const flags = {
|
|
11
|
+
help: args.includes('--help') || args.includes('-h'),
|
|
12
|
+
ver: args.includes('--version') || args.includes('-v'),
|
|
13
|
+
dryRun: args.includes('--dry-run'),
|
|
14
|
+
force: args.includes('--force'),
|
|
15
|
+
skipCompile: args.includes('--skip-compile'),
|
|
16
|
+
auto: args.includes('--auto'),
|
|
17
|
+
withMcp: args.includes('--with-mcp') || args.includes('--mcp'),
|
|
18
|
+
profile: (() => {
|
|
19
|
+
const i = args.indexOf('--profile');
|
|
20
|
+
return i !== -1 ? args[i + 1] : null;
|
|
21
|
+
})(),
|
|
22
|
+
addSkill: (() => {
|
|
23
|
+
const i = args.indexOf('--add-skill');
|
|
24
|
+
return i !== -1 ? args[i + 1] : null;
|
|
25
|
+
})(),
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// ── Help / Version ────────────────────────────────────────────────────────────
|
|
29
|
+
if (flags.ver) {
|
|
30
|
+
console.log(`contextos-agents v${version}`);
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (flags.help) {
|
|
35
|
+
console.log(`
|
|
36
|
+
contextos-agents v${version}
|
|
37
|
+
Install AI assistant skills and rules into your project.
|
|
38
|
+
|
|
39
|
+
Usage:
|
|
40
|
+
npx contextos-agents [options]
|
|
41
|
+
|
|
42
|
+
Options:
|
|
43
|
+
--help, -h Show this help message
|
|
44
|
+
--version, -v Show version number
|
|
45
|
+
--dry-run Preview what will be copied without making changes
|
|
46
|
+
--force Overwrite an existing .agents/ folder
|
|
47
|
+
--profile <name> Install a specific profile (mvp, startup, enterprise, frontend, backend)
|
|
48
|
+
--auto Auto-detect tech stack and apply recommended profile
|
|
49
|
+
--with-mcp, --mcp Install with MCP execution server enabled (.agents/mcp/ & mcp_config.json)
|
|
50
|
+
--skip-compile Skip running ctx.js export after installation
|
|
51
|
+
--add-skill <ref> Install a community plugin skill after setup
|
|
52
|
+
|
|
53
|
+
Commands:
|
|
54
|
+
audit Validate local skills (alias for validate)
|
|
55
|
+
detect Analyze project and display detected tech stack
|
|
56
|
+
install-skill Interactive skill installer (or pass <ref> / --from-repo)
|
|
57
|
+
setup-mcp Add MCP execution server to an existing .agents/ project
|
|
58
|
+
|
|
59
|
+
Profiles:
|
|
60
|
+
mvp Fastest shipping, minimalist monolith, excludes microservices & DDD
|
|
61
|
+
startup Balanced agile stack (modular monolith, security, testing)
|
|
62
|
+
enterprise Maximum rigor (DDD, microservices, security audit, ADRs, 80%+ tests)
|
|
63
|
+
frontend Frontend-focused (React, Next.js, UI/UX Pro, Accessibility, Design)
|
|
64
|
+
backend Backend-focused (Node, FastAPI, NestJS, DDD, Microservices, DB)
|
|
65
|
+
hackathon Rapid hackathon prototyping
|
|
66
|
+
|
|
67
|
+
Plugin ref formats:
|
|
68
|
+
username/repo GitHub repo with a SKILL.md at the root
|
|
69
|
+
username/repo@commit GitHub repo pinned to a commit
|
|
70
|
+
username/repo/path/to/skill GitHub skill in a subdirectory
|
|
71
|
+
npm-package-name A skill published as an npm package
|
|
72
|
+
@scope/npm-package A scoped npm skill package
|
|
73
|
+
|
|
74
|
+
Examples:
|
|
75
|
+
npx contextos-agents Install .agents/ into current project
|
|
76
|
+
npx contextos-agents --profile mvp Install with MVP profile
|
|
77
|
+
npx contextos-agents --auto Auto-detect tech stack and configure
|
|
78
|
+
npx contextos-agents --dry-run Preview files that would be copied
|
|
79
|
+
npx contextos-agents --add-skill alice/my-skill
|
|
80
|
+
|
|
81
|
+
Export skills to your AI tool:
|
|
82
|
+
node .agents/ctx.js export gemini → .agents/generated/gemini/ (Gemini / Antigravity)
|
|
83
|
+
node .agents/ctx.js export claude → .agents/generated/claude/ (Claude Code)
|
|
84
|
+
node .agents/ctx.js export cursor → .cursorrules & .cursor/rules (Cursor IDE)
|
|
85
|
+
node .agents/ctx.js export copilot → .github/copilot-instructions.md
|
|
86
|
+
node .agents/ctx.js export aider → .aider.conf.yml + CONVENTIONS.md
|
|
87
|
+
node .agents/ctx.js export zed → .zed/rules.md & .zed/prompts/ (Zed IDE)
|
|
88
|
+
node .agents/ctx.js export all → all of the above
|
|
89
|
+
|
|
90
|
+
Profile commands (after installation):
|
|
91
|
+
node .agents/ctx.js profile list List available profiles
|
|
92
|
+
node .agents/ctx.js profile apply <name> Switch project profile
|
|
93
|
+
node .agents/ctx.js detect Detect project tech stack
|
|
94
|
+
`);
|
|
95
|
+
process.exit(0);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// ── Top-level Commands ────────────────────────────────────────────────────────
|
|
99
|
+
const mainCommand = args[0] && !args[0].startsWith('-') ? args[0] : null;
|
|
100
|
+
|
|
101
|
+
if (mainCommand === 'audit') {
|
|
102
|
+
const ctxPath = path.join(process.cwd(), '.agents', 'ctx.js');
|
|
103
|
+
if (!fs.existsSync(ctxPath)) {
|
|
104
|
+
console.error('[ERROR] .agents/ctx.js not found. Are you in a ContextOS project?');
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
const { execFileSync } = require('child_process');
|
|
108
|
+
try {
|
|
109
|
+
execFileSync(process.execPath, [ctxPath, 'validate'], { stdio: 'inherit' });
|
|
110
|
+
} catch (e) {
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
process.exit(0);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (mainCommand === 'detect') {
|
|
117
|
+
const stack = profiles.detectStack(process.cwd());
|
|
118
|
+
console.log('\nContextOS — Tech Stack Detection\n');
|
|
119
|
+
console.log(` Detected Technologies : ${stack.detected.length ? stack.detected.join(', ') : 'Generic JavaScript'}`);
|
|
120
|
+
console.log(` Recommended Profile : ${stack.recommendedProfile}`);
|
|
121
|
+
console.log(` Recommended Skills : ${stack.recommendedSkills.join(', ')}\n`);
|
|
122
|
+
process.exit(0);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (mainCommand === 'install-skill') {
|
|
126
|
+
const ctxPath = path.join(process.cwd(), '.agents', 'ctx.js');
|
|
127
|
+
if (!fs.existsSync(ctxPath)) {
|
|
128
|
+
console.error('[ERROR] .agents/ctx.js not found. Are you in a ContextOS project?');
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const fromRepo = (() => {
|
|
133
|
+
const i = args.indexOf('--from-repo');
|
|
134
|
+
return i !== -1 ? args[i + 1] : null;
|
|
135
|
+
})();
|
|
136
|
+
|
|
137
|
+
const ref = fromRepo || (args[1] && !args[1].startsWith('-') ? args[1] : null);
|
|
138
|
+
|
|
139
|
+
if (ref) {
|
|
140
|
+
const { execFileSync } = require('child_process');
|
|
141
|
+
try {
|
|
142
|
+
execFileSync(process.execPath, [ctxPath, 'skill', 'add', ref], { stdio: 'inherit' });
|
|
143
|
+
} catch (e) {
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
process.exit(0);
|
|
147
|
+
} else {
|
|
148
|
+
// Interactive menu
|
|
149
|
+
(async () => {
|
|
150
|
+
try {
|
|
151
|
+
const inquirer = require('inquirer');
|
|
152
|
+
const https = require('https');
|
|
153
|
+
|
|
154
|
+
console.log('Fetching community skills from registry...');
|
|
155
|
+
|
|
156
|
+
const fetchRegistry = () => new Promise((resolve, reject) => {
|
|
157
|
+
https.get('https://raw.githubusercontent.com/kok-o/contextos-agents/main/registry.json', (res) => {
|
|
158
|
+
let data = '';
|
|
159
|
+
res.on('data', chunk => data += chunk);
|
|
160
|
+
res.on('end', () => resolve(JSON.parse(data)));
|
|
161
|
+
}).on('error', reject);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
const registry = await fetchRegistry();
|
|
165
|
+
const choices = registry.skills.map(s => ({
|
|
166
|
+
name: `${s.name} - ${s.description}`,
|
|
167
|
+
value: s.github ? `${s.github}${s.path ? '/' + s.path : ''}` : s.npm
|
|
168
|
+
}));
|
|
169
|
+
|
|
170
|
+
const answers = await inquirer.prompt([
|
|
171
|
+
{
|
|
172
|
+
type: 'checkbox',
|
|
173
|
+
name: 'selectedSkills',
|
|
174
|
+
message: 'Select skills to install:',
|
|
175
|
+
choices
|
|
176
|
+
}
|
|
177
|
+
]);
|
|
178
|
+
|
|
179
|
+
if (!answers.selectedSkills || answers.selectedSkills.length === 0) {
|
|
180
|
+
console.log('No skills selected.');
|
|
181
|
+
process.exit(0);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const { execFileSync } = require('child_process');
|
|
185
|
+
for (const skillRef of answers.selectedSkills) {
|
|
186
|
+
try {
|
|
187
|
+
execFileSync(process.execPath, [ctxPath, 'skill', 'add', skillRef], { stdio: 'inherit' });
|
|
188
|
+
} catch (e) {
|
|
189
|
+
console.error(`Failed to install ${skillRef}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
} catch (error) {
|
|
193
|
+
console.error('Failed to run interactive installer:', error.message);
|
|
194
|
+
if (error.code === 'MODULE_NOT_FOUND' && error.message.includes('inquirer')) {
|
|
195
|
+
console.error('It seems inquirer is not installed. Did you run npm install?');
|
|
196
|
+
}
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
})();
|
|
200
|
+
}
|
|
201
|
+
} else if (mainCommand === 'setup-mcp') {
|
|
202
|
+
const targetPath = path.join(process.cwd(), '.agents');
|
|
203
|
+
if (!fs.existsSync(targetPath)) {
|
|
204
|
+
console.error('[ERROR] .agents/ folder not found in current directory.');
|
|
205
|
+
console.error(' Run `npx contextos-agents` first or `npx contextos-agents --with-mcp`.');
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const sourceMcp = path.join(__dirname, '..', '.agents', 'mcp');
|
|
210
|
+
const targetMcp = path.join(targetPath, 'mcp');
|
|
211
|
+
if (!fs.existsSync(sourceMcp)) {
|
|
212
|
+
console.error('[ERROR] Source MCP server bundle not found in package.');
|
|
213
|
+
process.exit(1);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
try {
|
|
217
|
+
fs.cpSync(sourceMcp, targetMcp, { recursive: true, force: true });
|
|
218
|
+
console.log('[OK] Installed ContextOS MCP execution server into .agents/mcp/');
|
|
219
|
+
|
|
220
|
+
const mcpConfigPath = path.join(targetPath, 'mcp_config.json');
|
|
221
|
+
if (!fs.existsSync(mcpConfigPath) || flags.force) {
|
|
222
|
+
const defaultMcpConfig = {
|
|
223
|
+
mcpServers: {
|
|
224
|
+
"contextos": {
|
|
225
|
+
command: "node",
|
|
226
|
+
args: ["./.agents/mcp/server.mjs", "--dir", "."]
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
fs.writeFileSync(mcpConfigPath, JSON.stringify(defaultMcpConfig, null, 2));
|
|
231
|
+
console.log('[OK] Created MCP configuration (.agents/mcp_config.json)');
|
|
232
|
+
} else {
|
|
233
|
+
console.log('[INFO] Existing .agents/mcp_config.json retained.');
|
|
234
|
+
}
|
|
235
|
+
console.log('\n[SUCCESS] ContextOS MCP execution layer is configured.');
|
|
236
|
+
console.log('You can now use parallel subagents and git worktrees in your MCP-compatible IDE.\n');
|
|
237
|
+
} catch (err) {
|
|
238
|
+
console.error('[ERROR] Failed to configure MCP:', err.message);
|
|
239
|
+
process.exit(1);
|
|
240
|
+
}
|
|
241
|
+
process.exit(0);
|
|
242
|
+
} else {
|
|
243
|
+
|
|
244
|
+
// ── Paths ─────────────────────────────────────────────────────────────────────
|
|
245
|
+
const sourcePath = path.join(__dirname, '..', '.agents');
|
|
246
|
+
const targetPath = path.join(process.cwd(), '.agents');
|
|
247
|
+
|
|
248
|
+
function uniqueSiblingPath(basePath, suffix) {
|
|
249
|
+
let candidate = `${basePath}.${suffix}`;
|
|
250
|
+
let index = 1;
|
|
251
|
+
while (fs.existsSync(candidate)) {
|
|
252
|
+
candidate = `${basePath}.${suffix}-${index++}`;
|
|
253
|
+
}
|
|
254
|
+
return candidate;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Copy into a staging directory then replace the target with rollback.
|
|
259
|
+
*/
|
|
260
|
+
function installAtomically(source, target, options = {}) {
|
|
261
|
+
const stagingPath = uniqueSiblingPath(target, 'staging');
|
|
262
|
+
const backupPath = uniqueSiblingPath(target, 'backup');
|
|
263
|
+
let movedExisting = false;
|
|
264
|
+
|
|
265
|
+
try {
|
|
266
|
+
fs.cpSync(source, stagingPath, {
|
|
267
|
+
recursive: true,
|
|
268
|
+
force: true,
|
|
269
|
+
filter: (src) => {
|
|
270
|
+
if (!options.withMcp) {
|
|
271
|
+
const norm = src.replace(/\\/g, '/');
|
|
272
|
+
if (norm.endsWith('/mcp') || norm.includes('/mcp/') || norm.endsWith('/mcp_config.json')) {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return true;
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
if (fs.existsSync(target)) {
|
|
280
|
+
fs.renameSync(target, backupPath);
|
|
281
|
+
movedExisting = true;
|
|
282
|
+
}
|
|
283
|
+
fs.renameSync(stagingPath, target);
|
|
284
|
+
if (movedExisting) {
|
|
285
|
+
try {
|
|
286
|
+
fs.rmSync(backupPath, { recursive: true, force: true });
|
|
287
|
+
} catch {
|
|
288
|
+
console.warn(`[WARN] Installed successfully; backup retained at ${backupPath}`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
} catch (error) {
|
|
292
|
+
fs.rmSync(stagingPath, { recursive: true, force: true });
|
|
293
|
+
if (movedExisting && !fs.existsSync(target) && fs.existsSync(backupPath)) {
|
|
294
|
+
fs.renameSync(backupPath, target);
|
|
295
|
+
}
|
|
296
|
+
throw error;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// ── Stack detection ───────────────────────────────────────────────────────────
|
|
301
|
+
const stackDetection = profiles.detectStack(process.cwd());
|
|
302
|
+
|
|
303
|
+
// ── Dry run ───────────────────────────────────────────────────────────────────
|
|
304
|
+
if (flags.dryRun) {
|
|
305
|
+
console.log('[DRY-RUN] No files will be written.\n');
|
|
306
|
+
if (!fs.existsSync(sourcePath)) {
|
|
307
|
+
console.error('[ERROR] Source .agents/ folder not found in package.');
|
|
308
|
+
process.exit(1);
|
|
309
|
+
}
|
|
310
|
+
const countFiles = (dir) => {
|
|
311
|
+
let count = 0;
|
|
312
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
313
|
+
const full = path.join(dir, entry.name);
|
|
314
|
+
if (!flags.withMcp) {
|
|
315
|
+
const norm = full.replace(/\\/g, '/');
|
|
316
|
+
if (norm.endsWith('/mcp') || norm.includes('/mcp/') || norm.endsWith('/mcp_config.json')) {
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
count += entry.isDirectory() ? countFiles(full) : 1;
|
|
321
|
+
}
|
|
322
|
+
return count;
|
|
323
|
+
};
|
|
324
|
+
const total = countFiles(sourcePath);
|
|
325
|
+
if (fs.existsSync(targetPath)) {
|
|
326
|
+
console.log(`[WARN] .agents/ already exists — would be overwritten with --force.`);
|
|
327
|
+
} else {
|
|
328
|
+
console.log(`[OK] Would create .agents/ in: ${process.cwd()}`);
|
|
329
|
+
}
|
|
330
|
+
console.log(`[INFO] Detected stack: ${stackDetection.detected.length ? stackDetection.detected.join(', ') : 'Generic JavaScript'}`);
|
|
331
|
+
const targetProfile = flags.profile || (flags.auto ? stackDetection.recommendedProfile : 'none');
|
|
332
|
+
console.log(`[INFO] Selected profile: ${targetProfile}`);
|
|
333
|
+
console.log(`[INFO] ${total} files would be copied from the package.`);
|
|
334
|
+
console.log('\nRun without --dry-run to apply changes.');
|
|
335
|
+
process.exit(0);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// ── Main install ──────────────────────────────────────────────────────────────
|
|
339
|
+
console.log('Installing AI assistant skills (.agents/)...');
|
|
340
|
+
|
|
341
|
+
try {
|
|
342
|
+
if (!fs.existsSync(sourcePath)) {
|
|
343
|
+
console.error('[ERROR] Source .agents/ folder not found in package.');
|
|
344
|
+
process.exit(1);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
if (fs.existsSync(targetPath) && !flags.force) {
|
|
348
|
+
console.error('[ERROR] .agents/ already exists. Refusing to overwrite it.');
|
|
349
|
+
console.error(' Re-run with --force only after backing up your custom skills.');
|
|
350
|
+
process.exit(1);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (path.resolve(sourcePath) === path.resolve(targetPath)) {
|
|
354
|
+
console.error('[ERROR] Refusing to install the package into itself. Run this command from the target project.');
|
|
355
|
+
process.exit(1);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
installAtomically(sourcePath, targetPath, { withMcp: flags.withMcp });
|
|
359
|
+
|
|
360
|
+
console.log('[OK] .agents/ successfully installed in your project!');
|
|
361
|
+
if (stackDetection.detected.length > 0) {
|
|
362
|
+
console.log(`[OK] Detected project stack: ${stackDetection.detected.join(', ')}`);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// ── Create mcp_config.json only if --with-mcp ────────────────────────────────
|
|
366
|
+
if (flags.withMcp) {
|
|
367
|
+
const mcpConfigPath = path.join(targetPath, 'mcp_config.json');
|
|
368
|
+
if (!fs.existsSync(mcpConfigPath)) {
|
|
369
|
+
const defaultMcpConfig = {
|
|
370
|
+
mcpServers: {
|
|
371
|
+
"contextos": {
|
|
372
|
+
command: "node",
|
|
373
|
+
args: ["./.agents/mcp/server.mjs", "--dir", "."]
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
fs.writeFileSync(mcpConfigPath, JSON.stringify(defaultMcpConfig, null, 2));
|
|
378
|
+
console.log('[OK] Created default MCP configuration (.agents/mcp_config.json)');
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// ── Apply profile if requested or auto ──────────────────────────────────────
|
|
383
|
+
const selectedProfile = flags.profile || (flags.auto ? stackDetection.recommendedProfile : null);
|
|
384
|
+
if (selectedProfile) {
|
|
385
|
+
try {
|
|
386
|
+
const applied = profiles.applyProfile(selectedProfile, process.cwd());
|
|
387
|
+
console.log(`[OK] Applied profile '${applied.name}' (excluded: ${(applied.exclude_skills || []).join(', ') || 'none'})`);
|
|
388
|
+
} catch (e) {
|
|
389
|
+
console.warn(`[WARN] Could not apply profile '${selectedProfile}': ${e.message}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
console.log('[OK] Your AI assistant now has skills and rules configured.\n');
|
|
394
|
+
|
|
395
|
+
// ── Auto-compile skills ───────────────────────────────────────────────────
|
|
396
|
+
if (!flags.skipCompile) {
|
|
397
|
+
const ctxPath = path.join(targetPath, 'ctx.js');
|
|
398
|
+
if (fs.existsSync(ctxPath)) {
|
|
399
|
+
console.log('Compiling skills for Gemini...');
|
|
400
|
+
try {
|
|
401
|
+
const { execFileSync } = require('child_process');
|
|
402
|
+
execFileSync(process.execPath, [ctxPath, 'export', 'gemini'], {
|
|
403
|
+
cwd: process.cwd(),
|
|
404
|
+
stdio: 'inherit',
|
|
405
|
+
});
|
|
406
|
+
} catch (e) {
|
|
407
|
+
console.warn('[WARN] Skill compilation failed — run manually:');
|
|
408
|
+
console.warn(' node .agents/ctx.js export gemini');
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
} else {
|
|
412
|
+
console.log('Tip: Run `node .agents/ctx.js export gemini` to compile skills.');
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
console.log('\n Next steps:');
|
|
416
|
+
console.log(' 1. Open your project in your AI assistant');
|
|
417
|
+
console.log(' 2. The assistant will automatically load .agents/AGENTS.md');
|
|
418
|
+
console.log(' 3. Skills are pre-compiled in .agents/generated/gemini/skills/');
|
|
419
|
+
console.log(' 4. Switch profiles anytime:');
|
|
420
|
+
console.log(' node .agents/ctx.js profile list');
|
|
421
|
+
console.log(' node .agents/ctx.js profile apply mvp');
|
|
422
|
+
console.log(' 5. Export to other AI tools:');
|
|
423
|
+
console.log(' node .agents/ctx.js export cursor → .cursorrules & .cursor/rules');
|
|
424
|
+
console.log(' node .agents/ctx.js export copilot → .github/copilot-instructions.md');
|
|
425
|
+
console.log(' node .agents/ctx.js export aider → .aider.conf.yml + CONVENTIONS.md');
|
|
426
|
+
console.log(' 6. Add community skills (plugins):');
|
|
427
|
+
console.log(' node .agents/ctx.js skill add username/my-skill');
|
|
428
|
+
console.log(' node .agents/ctx.js skill list');
|
|
429
|
+
if (!flags.withMcp) {
|
|
430
|
+
console.log(' 7. Enable MCP parallel subagents & worktrees (optional):');
|
|
431
|
+
console.log(' npx contextos-agents setup-mcp');
|
|
432
|
+
}
|
|
433
|
+
console.log('');
|
|
434
|
+
|
|
435
|
+
// ── --add-skill flag ────────────────────────────────────────────────────────
|
|
436
|
+
if (flags.addSkill) {
|
|
437
|
+
const ctxPath = path.join(targetPath, 'ctx.js');
|
|
438
|
+
if (fs.existsSync(ctxPath)) {
|
|
439
|
+
console.log(`Installing plugin skill: ${flags.addSkill}`);
|
|
440
|
+
try {
|
|
441
|
+
const { execFileSync } = require('child_process');
|
|
442
|
+
execFileSync(process.execPath, [ctxPath, 'skill', 'add', flags.addSkill], {
|
|
443
|
+
cwd: process.cwd(),
|
|
444
|
+
stdio: 'inherit',
|
|
445
|
+
});
|
|
446
|
+
} catch (e) {
|
|
447
|
+
console.warn(`[WARN] Skill install failed — run manually:`);
|
|
448
|
+
console.warn(` node .agents/ctx.js skill add ${flags.addSkill}`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
} catch (error) {
|
|
454
|
+
console.error('[ERROR] Installation failed:', error.message);
|
|
455
|
+
process.exit(1);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
} // end of main install else block
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "contextos-agents",
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "Install a .agents folder into your project to teach AI assistants best practices: UI/UX, architecture, security, and engineering workflow skills.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"contextos-agents": "./bin/index.js",
|
|
7
|
+
"koko-contextos-agents": "./bin/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin",
|
|
11
|
+
"registry.json",
|
|
12
|
+
"registry.schema.json",
|
|
13
|
+
".agents/AGENTS.md",
|
|
14
|
+
".agents/skills.json",
|
|
15
|
+
".agents/ctx.js",
|
|
16
|
+
".agents/validate.js",
|
|
17
|
+
".agents/plugins.js",
|
|
18
|
+
".agents/profiles.js",
|
|
19
|
+
".agents/resolver.js",
|
|
20
|
+
".agents/skills-index.json",
|
|
21
|
+
".agents/adapters",
|
|
22
|
+
".agents/core",
|
|
23
|
+
".agents/generated",
|
|
24
|
+
".agents/mcp",
|
|
25
|
+
"benchmarks/gemini-issues.js"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "node .agents/ctx.js export all",
|
|
29
|
+
"export": "node .agents/ctx.js export gemini",
|
|
30
|
+
"validate": "node .agents/ctx.js validate",
|
|
31
|
+
"benchmark": "node benchmarks/gemini-issues.js",
|
|
32
|
+
"benchmark:live": "node benchmarks/run-live-benchmark.js",
|
|
33
|
+
"benchmark:runtime": "node benchmarks/run-runtime-benchmark.js",
|
|
34
|
+
"lint:md": "markdownlint README.md CONTRIBUTING.md .agents/core/skills/**/*.md --ignore .agents/generated/** --config .markdownlint.json",
|
|
35
|
+
"test": "node --test --test-concurrency=1 tests/install.test.js tests/export.test.js tests/skills.test.js tests/validate.test.js tests/plugins.test.js tests/benchmark.test.js tests/profile.test.js tests/resolver.test.js",
|
|
36
|
+
"prepublishOnly": "npm run validate && cd contextos-mcp && npm install && npm run build:bundle && cd .. && npm run build"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"ai",
|
|
40
|
+
"agents",
|
|
41
|
+
"contextos",
|
|
42
|
+
"ai-agents",
|
|
43
|
+
"claude",
|
|
44
|
+
"gemini",
|
|
45
|
+
"cursor",
|
|
46
|
+
"llm",
|
|
47
|
+
"prompt-engineering",
|
|
48
|
+
"skills",
|
|
49
|
+
"coding-assistant"
|
|
50
|
+
],
|
|
51
|
+
"author": "koko-o",
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "https://github.com/kok-o/contextos-agents.git"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/kok-o/contextos-agents#readme",
|
|
58
|
+
"bugs": {
|
|
59
|
+
"url": "https://github.com/kok-o/contextos-agents/issues"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=16.7.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"markdownlint-cli": "^0.43.0"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"inquirer": "^8.2.7"
|
|
69
|
+
}
|
|
70
|
+
}
|
package/registry.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/kok-o/contextos-agents/main/registry.schema.json",
|
|
3
|
+
"version": "1",
|
|
4
|
+
"description": "ContextOS Community Skill Registry. Submit a PR to add your skill.",
|
|
5
|
+
"skills": [
|
|
6
|
+
{
|
|
7
|
+
"id": "koko-o/ponytail-mindset",
|
|
8
|
+
"name": "ponytail-mindset",
|
|
9
|
+
"description": "Minimalist coding mindset — 7-rung YAGNI ladder. Reduces code output ~54%.",
|
|
10
|
+
"author": "koko-o",
|
|
11
|
+
"tags": ["minimalism", "efficiency", "yagni"],
|
|
12
|
+
"npm": null,
|
|
13
|
+
"github": "kok-o/contextos-agents",
|
|
14
|
+
"path": ".agents/core/skills/ponytail-mindset",
|
|
15
|
+
"builtin": true
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "koko-o/gstack-roles",
|
|
19
|
+
"name": "gstack-roles",
|
|
20
|
+
"description": "23 specialist AI roles. Declare your role before each task phase.",
|
|
21
|
+
"author": "koko-o",
|
|
22
|
+
"tags": ["roles", "workflow", "planning"],
|
|
23
|
+
"npm": null,
|
|
24
|
+
"github": "kok-o/contextos-agents",
|
|
25
|
+
"path": ".agents/core/skills/gstack-roles",
|
|
26
|
+
"builtin": true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "koko-o/impeccable-design",
|
|
30
|
+
"name": "impeccable-design",
|
|
31
|
+
"description": "50 deterministic design QA rules. Prevents AI design slop.",
|
|
32
|
+
"author": "koko-o",
|
|
33
|
+
"tags": ["ui", "design", "frontend", "anti-patterns"],
|
|
34
|
+
"npm": null,
|
|
35
|
+
"github": "kok-o/contextos-agents",
|
|
36
|
+
"path": ".agents/core/skills/impeccable-design",
|
|
37
|
+
"builtin": true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "koko-o/graphify",
|
|
41
|
+
"name": "graphify",
|
|
42
|
+
"description": "Codebase knowledge graph generator via Tree-sitter AST parsing and semantic indexing.",
|
|
43
|
+
"author": "koko-o",
|
|
44
|
+
"tags": ["knowledge-graph", "ast", "tree-sitter", "dependencies", "architecture"],
|
|
45
|
+
"npm": null,
|
|
46
|
+
"github": "kok-o/contextos-agents",
|
|
47
|
+
"path": ".agents/core/skills/graphify",
|
|
48
|
+
"builtin": true
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"contributing": "https://github.com/kok-o/contextos-agents/blob/main/CONTRIBUTING.md#publishing-a-skill-as-a-plugin",
|
|
52
|
+
"schema": "https://raw.githubusercontent.com/kok-o/contextos-agents/main/registry.schema.json"
|
|
53
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "ContextOS Skill Registry Schema",
|
|
4
|
+
"description": "Schema for registry.json and individual skill package.json manifests",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["version", "skills"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": { "type": "string" },
|
|
9
|
+
"description": { "type": "string" },
|
|
10
|
+
"skills": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"items": { "$ref": "#/definitions/SkillEntry" }
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"definitions": {
|
|
16
|
+
"SkillEntry": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"required": ["id", "name", "description", "author"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"id": { "type": "string", "pattern": "^[a-z0-9-]+/[a-z0-9-]+$", "description": "Unique skill ID in author/name format" },
|
|
21
|
+
"name": { "type": "string", "description": "Skill directory name (slug)" },
|
|
22
|
+
"description": { "type": "string", "description": "One-line description" },
|
|
23
|
+
"author": { "type": "string", "description": "GitHub username or org" },
|
|
24
|
+
"tags": { "type": "array", "items": { "type": "string" } },
|
|
25
|
+
"npm": { "type": ["string", "null"], "description": "npm package name if published" },
|
|
26
|
+
"github": { "type": ["string", "null"], "description": "GitHub repo in owner/repo format" },
|
|
27
|
+
"path": { "type": ["string", "null"], "description": "Path within the GitHub repo to the skill directory" },
|
|
28
|
+
"builtin": { "type": "boolean", "description": "true = ships with contextos-agents core" }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|