aiwg 2026.2.7 → 2026.2.8
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/CLAUDE.md +5 -1
- package/README.md +7 -2
- package/USAGE_GUIDE.md +6 -6
- package/agentic/code/frameworks/sdlc-complete/README.md +14 -9
- package/docs/development/aiwg-development-guide.md +1 -1
- package/docs/extensions/overview.md +1 -1
- package/docs/releases/v2026.2.8-announcement.md +82 -0
- package/package.json +1 -1
- package/src/cli/handlers/help.ts +14 -7
- package/src/cli/handlers/use.ts +4 -2
- package/src/cli/help-generator.ts +9 -5
- package/tools/agents/deploy-agents.mjs +18 -14
- package/tools/agents/providers/base.mjs +14 -0
- package/tools/agents/providers/claude.mjs +58 -0
- package/tools/agents/providers/codex.mjs +26 -0
- package/tools/agents/providers/copilot.mjs +58 -0
- package/tools/agents/providers/cursor.mjs +58 -0
- package/tools/agents/providers/factory.mjs +58 -0
- package/tools/agents/providers/opencode.mjs +58 -0
- package/tools/agents/providers/warp.mjs +58 -0
- package/tools/agents/providers/windsurf.mjs +64 -0
- /package/docs/releases/{v2026.01.3-announcement.md → v2026.1.3-announcement.md} +0 -0
package/CLAUDE.md
CHANGED
|
@@ -23,7 +23,9 @@ aiwg use sdlc
|
|
|
23
23
|
agentic/code/
|
|
24
24
|
├── frameworks/
|
|
25
25
|
│ ├── sdlc-complete/ # Complete SDLC coverage
|
|
26
|
-
│
|
|
26
|
+
│ ├── media-marketing-kit/ # Full marketing operations
|
|
27
|
+
│ ├── media-curator/ # Media archive management
|
|
28
|
+
│ └── research-complete/ # Research workflow automation
|
|
27
29
|
├── addons/
|
|
28
30
|
│ └── voice-framework/ # Voice profiles
|
|
29
31
|
└── agents/ # Writing quality agents
|
|
@@ -260,6 +262,8 @@ aiwg reproducibility-validate # Validate workflow reproducibility
|
|
|
260
262
|
| **Creating Extensions** | `@docs/extensions/creating-extensions.md` |
|
|
261
263
|
| **Extension Types** | `@docs/extensions/extension-types.md` |
|
|
262
264
|
| **SDLC Framework** | `@agentic/code/frameworks/sdlc-complete/README.md` |
|
|
265
|
+
| **Media Curator** | `@agentic/code/frameworks/media-curator/README.md` |
|
|
266
|
+
| **Research Complete** | `@agentic/code/frameworks/research-complete/README.md` |
|
|
263
267
|
| **RLM Addon** | `@agentic/code/addons/rlm/README.md` |
|
|
264
268
|
| **Daemon Mode** | `@docs/daemon-guide.md` |
|
|
265
269
|
| **Messaging Integration** | `@docs/messaging-guide.md` |
|
package/README.md
CHANGED
|
@@ -95,6 +95,7 @@ npm install -g aiwg
|
|
|
95
95
|
cd your-project
|
|
96
96
|
aiwg use sdlc # Full SDLC framework
|
|
97
97
|
aiwg use marketing # Marketing framework
|
|
98
|
+
aiwg use media-curator # Media archive management
|
|
98
99
|
aiwg use rlm # RLM addon (recursive context decomposition)
|
|
99
100
|
aiwg use all # All frameworks
|
|
100
101
|
|
|
@@ -119,8 +120,10 @@ aiwg new my-project
|
|
|
119
120
|
|
|
120
121
|
| Framework | What it does |
|
|
121
122
|
|-----------|--------------|
|
|
122
|
-
| **[SDLC Complete](agentic/code/frameworks/sdlc-complete/)** | Full software development lifecycle with agents, commands, templates, and multi-agent orchestration |
|
|
123
|
+
| **[SDLC Complete](agentic/code/frameworks/sdlc-complete/)** | Full software development lifecycle with 70+ agents, commands, templates, and multi-agent orchestration |
|
|
123
124
|
| **[Media/Marketing Kit](agentic/code/frameworks/media-marketing-kit/)** | Complete marketing campaign management from strategy to analytics |
|
|
125
|
+
| **[Media Curator](agentic/code/frameworks/media-curator/)** | Intelligent media archive management — discography analysis, acquisition, quality filtering, metadata curation, and multi-platform export |
|
|
126
|
+
| **[Research Complete](agentic/code/frameworks/research-complete/)** | Academic research workflow — discovery, acquisition, RAG-based documentation, and citation management |
|
|
124
127
|
|
|
125
128
|
### Addons
|
|
126
129
|
|
|
@@ -228,6 +231,8 @@ See [Platform Integration Guides](docs/integrations/) for setup instructions.
|
|
|
228
231
|
|
|
229
232
|
- **[SDLC Framework](agentic/code/frameworks/sdlc-complete/README.md)** — Agents, commands, templates, flows
|
|
230
233
|
- **[Marketing Kit](agentic/code/frameworks/media-marketing-kit/README.md)** — Campaign lifecycle guide
|
|
234
|
+
- **[Media Curator](agentic/code/frameworks/media-curator/README.md)** — Media archive management
|
|
235
|
+
- **[Research Complete](agentic/code/frameworks/research-complete/README.md)** — Research workflows
|
|
231
236
|
- **[Voice Framework](agentic/code/addons/voice-framework/)** — Voice profiles and skills
|
|
232
237
|
|
|
233
238
|
### Extension System
|
|
@@ -239,7 +244,7 @@ AIWG's unified extension system enables dynamic discovery, semantic search, and
|
|
|
239
244
|
- **[Extension Types Reference](docs/extensions/extension-types.md)** — Complete type definitions
|
|
240
245
|
|
|
241
246
|
**Extension types:**
|
|
242
|
-
- **Agents** (
|
|
247
|
+
- **Agents** (70+): Specialized AI personas (API Designer, Test Engineer, Security Auditor)
|
|
243
248
|
- **Commands** (31): CLI and slash commands (`aiwg use sdlc`, `/mention-wire`)
|
|
244
249
|
- **Skills**: Natural language workflows (project awareness, voice application)
|
|
245
250
|
- **Hooks**: Lifecycle event handlers (pre-session, post-write)
|
package/USAGE_GUIDE.md
CHANGED
|
@@ -11,7 +11,7 @@ Native Claude Code integration via the plugin marketplace:
|
|
|
11
11
|
/plugin marketplace add jmagly/ai-writing-guide
|
|
12
12
|
|
|
13
13
|
# Install plugins
|
|
14
|
-
/plugin install sdlc@aiwg #
|
|
14
|
+
/plugin install sdlc@aiwg # 70+ SDLC agents
|
|
15
15
|
/plugin install marketing@aiwg # 37 marketing agents
|
|
16
16
|
/plugin install utils@aiwg # Core utilities
|
|
17
17
|
/plugin install voice@aiwg # Voice profiles
|
|
@@ -359,11 +359,11 @@ For complex writing tasks, leverage specialized agents:
|
|
|
359
359
|
**Quick Start**:
|
|
360
360
|
|
|
361
361
|
```bash
|
|
362
|
-
# Deploy
|
|
363
|
-
aiwg
|
|
362
|
+
# Deploy SDLC framework to your project
|
|
363
|
+
aiwg use sdlc
|
|
364
364
|
|
|
365
|
-
# Or deploy all
|
|
366
|
-
aiwg
|
|
365
|
+
# Or deploy all frameworks
|
|
366
|
+
aiwg use all
|
|
367
367
|
```
|
|
368
368
|
|
|
369
369
|
**Agent Invocation**:
|
|
@@ -389,7 +389,7 @@ aiwg -deploy-agents --mode both
|
|
|
389
389
|
|
|
390
390
|
#### SDLC Framework Agents (`/agentic/code/frameworks/sdlc-complete/agents/`)
|
|
391
391
|
|
|
392
|
-
|
|
392
|
+
70+ specialized agents covering all development lifecycle phases:
|
|
393
393
|
|
|
394
394
|
- **Development**: code-reviewer, test-engineer, architecture-designer, debugger, performance-engineer
|
|
395
395
|
- **Requirements**: requirements-analyst, requirements-reviewer, business-process-analyst
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
The SDLC Complete framework provides a comprehensive Plan → Act lifecycle for software delivery using AI agents. This specialized framework includes agents, commands, templates, and flows for managing the entire software development lifecycle.
|
|
6
6
|
|
|
7
|
-
**Supported Platforms:** Claude Code, Warp Terminal, Factory AI, OpenAI/Codex
|
|
7
|
+
**Supported Platforms:** Claude Code, Warp Terminal, Factory AI, GitHub Copilot, Cursor, OpenCode, OpenAI/Codex, Windsurf
|
|
8
8
|
|
|
9
9
|
## Framework Structure
|
|
10
10
|
|
|
11
11
|
### Content
|
|
12
12
|
|
|
13
|
-
- `agents/` —
|
|
13
|
+
- `agents/` — 70+ specialized SDLC role agents (architecture-designer, requirements-analyst, security-gatekeeper, etc.)
|
|
14
14
|
- `commands/` — SDLC-specific slash commands (intake-start, orchestrate-project, security-gate, etc.)
|
|
15
15
|
- `templates/` — Markdown templates for all SDLC artifacts
|
|
16
16
|
- `flows/` — Phase-based workflows (Inception → Elaboration → Construction → Transition)
|
|
@@ -55,15 +55,20 @@ Use the AIWG CLI to deploy this framework:
|
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
57
|
# Install CLI
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
# Deploy
|
|
61
|
-
aiwg
|
|
62
|
-
aiwg
|
|
63
|
-
aiwg
|
|
58
|
+
npm install -g aiwg
|
|
59
|
+
|
|
60
|
+
# Deploy to project (choose your platform)
|
|
61
|
+
aiwg use sdlc # Claude Code (default)
|
|
62
|
+
aiwg use sdlc --provider warp # Warp Terminal
|
|
63
|
+
aiwg use sdlc --provider factory # Factory AI
|
|
64
|
+
aiwg use sdlc --provider copilot # GitHub Copilot
|
|
65
|
+
aiwg use sdlc --provider cursor # Cursor
|
|
66
|
+
aiwg use sdlc --provider codex # OpenAI/Codex
|
|
67
|
+
aiwg use sdlc --provider opencode # OpenCode
|
|
68
|
+
aiwg use sdlc --provider windsurf # Windsurf
|
|
64
69
|
|
|
65
70
|
# Scaffold new project with SDLC templates
|
|
66
|
-
aiwg -
|
|
71
|
+
aiwg new my-project
|
|
67
72
|
```
|
|
68
73
|
|
|
69
74
|
## Usage
|
|
@@ -21,7 +21,7 @@ If you create a schema file but no agent references it, it does nothing. If you
|
|
|
21
21
|
|
|
22
22
|
| Tier | Scale | Standalone | Source Location | Example |
|
|
23
23
|
|------|-------|------------|-----------------|---------|
|
|
24
|
-
| **Framework** | Large (50+ agents) | Yes | `agentic/code/frameworks/` | sdlc-complete, media-marketing-kit |
|
|
24
|
+
| **Framework** | Large (50+ agents) | Yes | `agentic/code/frameworks/` | sdlc-complete, media-marketing-kit, media-curator, research-complete |
|
|
25
25
|
| **Extension** | Medium (5-20 agents) | No (requires parent framework) | `frameworks/{id}/extensions/` | gdpr, hipaa, sox |
|
|
26
26
|
| **Addon** | Small (1-10 agents) | Yes | `agentic/code/addons/` | aiwg-utils, voice-framework |
|
|
27
27
|
|
|
@@ -21,7 +21,7 @@ Extensions are the building blocks of AIWG frameworks and addons. They include:
|
|
|
21
21
|
| **hook** | Lifecycle event handlers | Pre-session setup, post-write validation |
|
|
22
22
|
| **tool** | External utilities | git, jq, npm |
|
|
23
23
|
| **mcp-server** | MCP protocol servers | AIWG MCP server |
|
|
24
|
-
| **framework** | Complete workflows | SDLC Complete, Marketing Kit |
|
|
24
|
+
| **framework** | Complete workflows | SDLC Complete, Marketing Kit, Media Curator, Research Complete |
|
|
25
25
|
| **addon** | Feature bundles | Voice Framework, Testing Quality |
|
|
26
26
|
| **template** | Document templates | Use case template, ADR template |
|
|
27
27
|
| **prompt** | Reusable prompts | Code review, security audit |
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# AIWG v2026.2.8 — "Full Catalog" Release
|
|
2
|
+
|
|
3
|
+
**Released**: 2026-02-14
|
|
4
|
+
|
|
5
|
+
This release makes all four AIWG frameworks individually deployable via the CLI and completes a comprehensive documentation audit to ensure everything reflects the current project state.
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
| What changed | Why you care |
|
|
10
|
+
|--------------|--------------|
|
|
11
|
+
| `aiwg use media-curator` | Deploy the Media Curator framework standalone — no need for `aiwg use all` |
|
|
12
|
+
| `aiwg use research` | Deploy the Research Complete framework standalone |
|
|
13
|
+
| Complete provider help | All 8 providers visible in `aiwg help` output |
|
|
14
|
+
| Documentation audit | Stale counts, deprecated syntax, and missing references cleaned up |
|
|
15
|
+
|
|
16
|
+
## New Framework Deployment Targets
|
|
17
|
+
|
|
18
|
+
Previously, the Media Curator and Research Complete frameworks could only be deployed via `aiwg use all`. Now they're first-class CLI targets:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Deploy individually
|
|
22
|
+
aiwg use media-curator # 6 agents, 9 commands, 9 skills
|
|
23
|
+
aiwg use research # 8 agents, 10 commands
|
|
24
|
+
|
|
25
|
+
# Deploy to any provider
|
|
26
|
+
aiwg use media-curator --provider cursor
|
|
27
|
+
aiwg use research --provider copilot
|
|
28
|
+
|
|
29
|
+
# Still works — deploys everything
|
|
30
|
+
aiwg use all
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### All Four Frameworks
|
|
34
|
+
|
|
35
|
+
| Framework | Command | Agents | Commands | Skills |
|
|
36
|
+
|-----------|---------|--------|----------|--------|
|
|
37
|
+
| SDLC Complete | `aiwg use sdlc` | 70+ | 50+ | 10+ |
|
|
38
|
+
| Media Marketing Kit | `aiwg use marketing` | 37 | 20+ | 8 |
|
|
39
|
+
| Media Curator | `aiwg use media-curator` | 6 | 9 | 9 |
|
|
40
|
+
| Research Complete | `aiwg use research` | 8 | 10 | — |
|
|
41
|
+
|
|
42
|
+
## Complete Provider Support
|
|
43
|
+
|
|
44
|
+
The help text now shows all 8 supported providers:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Platform Options (--provider):
|
|
48
|
+
claude Claude Code (default)
|
|
49
|
+
copilot GitHub Copilot
|
|
50
|
+
factory Factory AI
|
|
51
|
+
codex / openai OpenAI Codex
|
|
52
|
+
cursor Cursor IDE
|
|
53
|
+
opencode OpenCode
|
|
54
|
+
warp Warp Terminal
|
|
55
|
+
windsurf Windsurf
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
All 8 providers received deployment blocks for the new frameworks — 32 provider-framework combinations now supported.
|
|
59
|
+
|
|
60
|
+
## Documentation Audit
|
|
61
|
+
|
|
62
|
+
A comprehensive audit of ~384 documentation files identified and fixed:
|
|
63
|
+
|
|
64
|
+
- **Agent counts**: "50+" and "58" → "70+" across README, USAGE_GUIDE, sdlc-complete/README
|
|
65
|
+
- **Deprecated CLI syntax**: `aiwg -deploy-agents --mode sdlc` → `aiwg use sdlc`
|
|
66
|
+
- **Missing frameworks**: media-curator and research-complete added to CLAUDE.md, README, development guide, extension overview
|
|
67
|
+
- **Platform count**: 4 → 8 in sdlc-complete/README
|
|
68
|
+
- **CalVer violation**: Renamed `v2026.01.3-announcement.md` to `v2026.1.3-announcement.md`
|
|
69
|
+
- **Planning archive**: 20 completed planning documents moved to `.aiwg/planning/archive/`
|
|
70
|
+
|
|
71
|
+
## Install / Update
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm install -g aiwg@2026.2.8
|
|
75
|
+
|
|
76
|
+
# Or update existing installation
|
|
77
|
+
aiwg update
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Full Changelog
|
|
81
|
+
|
|
82
|
+
See [CHANGELOG.md](../../CHANGELOG.md) for complete details.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiwg",
|
|
3
|
-
"version": "2026.2.
|
|
3
|
+
"version": "2026.2.8",
|
|
4
4
|
"description": "Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/cli/handlers/help.ts
CHANGED
|
@@ -36,8 +36,9 @@ AIWG CLI
|
|
|
36
36
|
Usage: aiwg <command> [options]
|
|
37
37
|
|
|
38
38
|
Framework Management:
|
|
39
|
-
use <framework> Install and deploy framework
|
|
40
|
-
|
|
39
|
+
use <framework> Install and deploy framework
|
|
40
|
+
Frameworks: sdlc, marketing, media-curator, research, writing, all
|
|
41
|
+
Options: --no-utils, --provider <provider>, --force
|
|
41
42
|
list List installed frameworks and addons
|
|
42
43
|
remove <id> Remove a framework or addon
|
|
43
44
|
|
|
@@ -97,11 +98,15 @@ Maintenance:
|
|
|
97
98
|
-update Check for and apply updates
|
|
98
99
|
-help Show this help message
|
|
99
100
|
|
|
100
|
-
Platform Options:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
Platform Options (--provider):
|
|
102
|
+
claude Claude Code (default)
|
|
103
|
+
copilot GitHub Copilot
|
|
104
|
+
factory Factory AI
|
|
105
|
+
codex / openai OpenAI Codex
|
|
106
|
+
cursor Cursor IDE
|
|
107
|
+
opencode OpenCode
|
|
108
|
+
warp Warp Terminal
|
|
109
|
+
windsurf Windsurf
|
|
105
110
|
|
|
106
111
|
Model Selection (for 'use' command):
|
|
107
112
|
--reasoning-model <name> Override model for reasoning tier (opus-level agents)
|
|
@@ -122,6 +127,8 @@ Ralph Loop (Iterative Execution):
|
|
|
122
127
|
|
|
123
128
|
Examples:
|
|
124
129
|
aiwg use sdlc Install SDLC framework
|
|
130
|
+
aiwg use media-curator Install Media Curator framework
|
|
131
|
+
aiwg use research Install Research framework
|
|
125
132
|
aiwg use all --provider factory Install all frameworks for Factory AI
|
|
126
133
|
aiwg use sdlc --reasoning-model opus-4-2 Deploy with custom reasoning model
|
|
127
134
|
aiwg use sdlc --coding-model sonnet-5 --save Deploy with custom model and save
|
package/src/cli/handlers/use.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { registerDeployedExtensions } from '../../extensions/deployment-registra
|
|
|
20
20
|
/**
|
|
21
21
|
* Valid framework identifiers
|
|
22
22
|
*/
|
|
23
|
-
const VALID_FRAMEWORKS = ['sdlc', 'marketing', 'writing', 'general', 'all'] as const;
|
|
23
|
+
const VALID_FRAMEWORKS = ['sdlc', 'marketing', 'media-curator', 'research', 'writing', 'general', 'all'] as const;
|
|
24
24
|
type Framework = typeof VALID_FRAMEWORKS[number];
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -29,6 +29,8 @@ type Framework = typeof VALID_FRAMEWORKS[number];
|
|
|
29
29
|
const MODE_MAP: Record<Framework, string> = {
|
|
30
30
|
sdlc: 'sdlc',
|
|
31
31
|
marketing: 'marketing',
|
|
32
|
+
'media-curator': 'media-curator',
|
|
33
|
+
research: 'research',
|
|
32
34
|
writing: 'general',
|
|
33
35
|
general: 'general',
|
|
34
36
|
all: 'all',
|
|
@@ -122,7 +124,7 @@ export class UseHandler implements CommandHandler {
|
|
|
122
124
|
if (!framework) {
|
|
123
125
|
return {
|
|
124
126
|
exitCode: 1,
|
|
125
|
-
message: 'Error: Framework or addon name required\nFrameworks: sdlc, marketing, writing, all\nAddons: rlm',
|
|
127
|
+
message: 'Error: Framework or addon name required\nFrameworks: sdlc, marketing, media-curator, research, writing, all\nAddons: rlm',
|
|
126
128
|
};
|
|
127
129
|
}
|
|
128
130
|
|
|
@@ -85,11 +85,15 @@ export function generateHelp(registry: ExtensionRegistry): string {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// Platform options
|
|
88
|
-
lines.push('Platform Options:');
|
|
89
|
-
lines.push('
|
|
90
|
-
lines.push('
|
|
91
|
-
lines.push('
|
|
92
|
-
lines.push('
|
|
88
|
+
lines.push('Platform Options (--provider):');
|
|
89
|
+
lines.push(' claude Claude Code (default)');
|
|
90
|
+
lines.push(' copilot GitHub Copilot');
|
|
91
|
+
lines.push(' factory Factory AI');
|
|
92
|
+
lines.push(' codex / openai OpenAI Codex');
|
|
93
|
+
lines.push(' cursor Cursor IDE');
|
|
94
|
+
lines.push(' opencode OpenCode');
|
|
95
|
+
lines.push(' warp Warp Terminal');
|
|
96
|
+
lines.push(' windsurf Windsurf');
|
|
93
97
|
lines.push('');
|
|
94
98
|
|
|
95
99
|
// Examples
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Options:
|
|
12
12
|
* --source <path> Source directory (defaults to repo root)
|
|
13
13
|
* --target <path> Target directory (defaults to cwd)
|
|
14
|
-
* --mode <type> Deployment mode: general, sdlc, marketing, both, or all (default)
|
|
14
|
+
* --mode <type> Deployment mode: general, sdlc, marketing, media-curator, research, both, or all (default)
|
|
15
15
|
* --deploy-commands Deploy commands in addition to agents
|
|
16
16
|
* --deploy-skills Deploy skills in addition to agents
|
|
17
17
|
* --deploy-rules Deploy rules in addition to agents
|
|
@@ -28,12 +28,14 @@
|
|
|
28
28
|
* --create-agents-md Create/update AGENTS.md template (Factory/Codex/OpenCode/Cursor)
|
|
29
29
|
*
|
|
30
30
|
* Modes:
|
|
31
|
-
* general
|
|
32
|
-
* writing
|
|
33
|
-
* sdlc
|
|
34
|
-
* marketing
|
|
35
|
-
*
|
|
36
|
-
*
|
|
31
|
+
* general - Deploy only writing-quality addon agents and commands (alias: writing)
|
|
32
|
+
* writing - Deploy only writing-quality addon agents (alias for general)
|
|
33
|
+
* sdlc - Deploy only SDLC Complete framework agents and commands
|
|
34
|
+
* marketing - Deploy only Media/Marketing Kit framework agents and commands
|
|
35
|
+
* media-curator - Deploy only Media Curator framework agents and commands
|
|
36
|
+
* research - Deploy only Research Complete framework agents and commands
|
|
37
|
+
* both - Deploy writing + SDLC (legacy compatibility)
|
|
38
|
+
* all - Deploy all frameworks + addons (default)
|
|
37
39
|
*
|
|
38
40
|
* Providers:
|
|
39
41
|
* claude - Claude Code (default) - .claude/agents/, .claude/commands/, .claude/skills/, .claude/rules/
|
|
@@ -76,7 +78,7 @@ function parseArgs() {
|
|
|
76
78
|
const cfg = {
|
|
77
79
|
source: null,
|
|
78
80
|
target: process.cwd(),
|
|
79
|
-
mode: 'all', // 'general', 'sdlc', 'marketing', 'both' (legacy), or 'all'
|
|
81
|
+
mode: 'all', // 'general', 'sdlc', 'marketing', 'media-curator', 'research', 'both' (legacy), or 'all'
|
|
80
82
|
dryRun: false,
|
|
81
83
|
force: false,
|
|
82
84
|
provider: 'claude',
|
|
@@ -138,7 +140,7 @@ Usage:
|
|
|
138
140
|
Options:
|
|
139
141
|
--source <path> Source directory (defaults to repo root)
|
|
140
142
|
--target <path> Target directory (defaults to cwd)
|
|
141
|
-
--mode <type> Deployment mode: general, sdlc, marketing, both, or all (default)
|
|
143
|
+
--mode <type> Deployment mode: general, sdlc, marketing, media-curator, research, both, or all (default)
|
|
142
144
|
--deploy-commands Deploy commands in addition to agents
|
|
143
145
|
--deploy-skills Deploy skills in addition to agents
|
|
144
146
|
--deploy-rules Deploy rules in addition to agents
|
|
@@ -177,11 +179,13 @@ Providers (all deploy agents, commands, skills, and rules):
|
|
|
177
179
|
Paths: .windsurf/agents/, .windsurf/workflows/, .windsurf/skills/, .windsurf/rules/
|
|
178
180
|
|
|
179
181
|
Modes:
|
|
180
|
-
general
|
|
181
|
-
sdlc
|
|
182
|
-
marketing
|
|
183
|
-
|
|
184
|
-
|
|
182
|
+
general - Writing-quality addon agents and commands (alias: writing)
|
|
183
|
+
sdlc - SDLC Complete framework agents and commands
|
|
184
|
+
marketing - Media/Marketing Kit framework agents and commands
|
|
185
|
+
media-curator - Media Curator framework agents and commands
|
|
186
|
+
research - Research Complete framework agents and commands
|
|
187
|
+
both - writing + SDLC (legacy compatibility)
|
|
188
|
+
all - All frameworks + addons (default)
|
|
185
189
|
|
|
186
190
|
Examples:
|
|
187
191
|
# Deploy SDLC framework to Claude Code
|
|
@@ -392,6 +392,20 @@ export function initializeFrameworkWorkspace(target, mode, dryRun) {
|
|
|
392
392
|
});
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
396
|
+
frameworkDirs.push({
|
|
397
|
+
id: 'media-curator',
|
|
398
|
+
subdirs: ['repo', 'library', 'working', 'archive']
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
if (mode === 'research' || mode === 'all') {
|
|
403
|
+
frameworkDirs.push({
|
|
404
|
+
id: 'research-complete',
|
|
405
|
+
subdirs: ['repo', 'corpus', 'working', 'archive']
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
|
|
395
409
|
if (frameworkDirs.length === 0) return;
|
|
396
410
|
|
|
397
411
|
if (dryRun) {
|
|
@@ -379,6 +379,64 @@ export async function deploy(opts) {
|
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
+
// Media Curator framework
|
|
383
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
384
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
385
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
386
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
390
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
391
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
392
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
397
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
398
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
399
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
if (shouldDeployRules || rulesOnly) {
|
|
404
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
405
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
406
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Research framework
|
|
412
|
+
if (mode === 'research' || mode === 'all') {
|
|
413
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
414
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
415
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
419
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
420
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
421
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
426
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
427
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
428
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
if (shouldDeployRules || rulesOnly) {
|
|
433
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
434
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
435
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
382
440
|
// Deploy based on flags
|
|
383
441
|
if (!commandsOnly && !skillsOnly) {
|
|
384
442
|
// Apply filters if specified
|
|
@@ -355,6 +355,32 @@ export async function deploy(opts) {
|
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
+
// Media Curator framework
|
|
359
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
360
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
361
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
362
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
366
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
367
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Research framework
|
|
372
|
+
if (mode === 'research' || mode === 'all') {
|
|
373
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
374
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
375
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
379
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
380
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
358
384
|
// All addons (dynamically discovered)
|
|
359
385
|
if (mode === 'general' || mode === 'writing' || mode === 'sdlc' || mode === 'both' || mode === 'all') {
|
|
360
386
|
agentFiles.push(...getAddonAgentFiles(srcRoot));
|
|
@@ -457,6 +457,64 @@ export async function deploy(opts) {
|
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
+
// Media Curator framework
|
|
461
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
462
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
463
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
464
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
468
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
469
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
470
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
475
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
476
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
477
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
if (shouldDeployRules || rulesOnly) {
|
|
482
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
483
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
484
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
// Research framework
|
|
490
|
+
if (mode === 'research' || mode === 'all') {
|
|
491
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
492
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
493
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
497
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
498
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
499
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
504
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
505
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
506
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if (shouldDeployRules || rulesOnly) {
|
|
511
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
512
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
513
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
460
518
|
// Deploy
|
|
461
519
|
if (!commandsOnly && !skillsOnly && !rulesOnly) {
|
|
462
520
|
console.log(`\nDeploying ${agentFiles.length} agents (YAML format)...`);
|
|
@@ -390,6 +390,64 @@ export async function deploy(opts) {
|
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
+
// Media Curator framework
|
|
394
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
395
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
396
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
397
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
401
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
402
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
403
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
408
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
409
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
410
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
if (shouldDeployRules || rulesOnly) {
|
|
415
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
416
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
417
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// Research framework
|
|
423
|
+
if (mode === 'research' || mode === 'all') {
|
|
424
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
425
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
426
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
430
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
431
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
432
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
437
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
438
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
439
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (shouldDeployRules || rulesOnly) {
|
|
444
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
445
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
446
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
393
451
|
// Deploy based on flags
|
|
394
452
|
if (!commandsOnly && !skillsOnly && !rulesOnly) {
|
|
395
453
|
// Apply filters if specified
|
|
@@ -567,6 +567,64 @@ export async function deploy(opts) {
|
|
|
567
567
|
}
|
|
568
568
|
}
|
|
569
569
|
|
|
570
|
+
// Media Curator framework
|
|
571
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
572
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
573
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
574
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
578
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
579
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
580
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
if (shouldDeployRules || rulesOnly) {
|
|
585
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
586
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
587
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
592
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
593
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
594
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
// Research framework
|
|
600
|
+
if (mode === 'research' || mode === 'all') {
|
|
601
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
602
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
603
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
607
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
608
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
609
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
if (shouldDeployRules || rulesOnly) {
|
|
614
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
615
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
616
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
621
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
622
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
623
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
570
628
|
// Deploy based on flags
|
|
571
629
|
if (!commandsOnly && !skillsOnly && !rulesOnly) {
|
|
572
630
|
console.log(`\nDeploying ${agentFiles.length} agents as droids...`);
|
|
@@ -428,6 +428,64 @@ export async function deploy(opts) {
|
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
+
// Media Curator framework
|
|
432
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
433
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
434
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
435
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
439
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
440
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
441
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
446
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
447
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
448
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
if (shouldDeployRules || rulesOnly) {
|
|
453
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
454
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
455
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// Research framework
|
|
461
|
+
if (mode === 'research' || mode === 'all') {
|
|
462
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
463
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
464
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
468
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
469
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
470
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
475
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
476
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
477
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
if (shouldDeployRules || rulesOnly) {
|
|
482
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
483
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
484
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
431
489
|
// Deploy
|
|
432
490
|
if (!commandsOnly && !skillsOnly && !rulesOnly) {
|
|
433
491
|
console.log(`\nDeploying ${agentFiles.length} agents...`);
|
|
@@ -389,6 +389,64 @@ export async function deploy(opts) {
|
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
391
|
|
|
392
|
+
// Media Curator framework
|
|
393
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
394
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
395
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
396
|
+
agentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
400
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
401
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
402
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
407
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
408
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
409
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (shouldDeployRules || rulesOnly) {
|
|
414
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
415
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
416
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// Research framework
|
|
422
|
+
if (mode === 'research' || mode === 'all') {
|
|
423
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
424
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
425
|
+
agentFiles.push(...listMdFiles(researchAgentsDir));
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
if (shouldDeployCommands || commandsOnly) {
|
|
429
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
430
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
431
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
if (shouldDeploySkills || skillsOnly) {
|
|
436
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
437
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
438
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
if (shouldDeployRules || rulesOnly) {
|
|
443
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
444
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
445
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
|
|
392
450
|
// Deploy discrete files for all artifact types
|
|
393
451
|
console.log('\n--- Deploying discrete files ---');
|
|
394
452
|
|
|
@@ -466,6 +466,22 @@ export async function deploy(opts) {
|
|
|
466
466
|
allAgentFiles.push(...listMdFiles(marketingAgentsDir));
|
|
467
467
|
}
|
|
468
468
|
|
|
469
|
+
// Media Curator framework
|
|
470
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
471
|
+
const curatorAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'agents');
|
|
472
|
+
if (fs.existsSync(curatorAgentsDir)) {
|
|
473
|
+
allAgentFiles.push(...listMdFiles(curatorAgentsDir));
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// Research framework
|
|
478
|
+
if (mode === 'research' || mode === 'all') {
|
|
479
|
+
const researchAgentsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'agents');
|
|
480
|
+
if (fs.existsSync(researchAgentsDir)) {
|
|
481
|
+
allAgentFiles.push(...listMdFiles(researchAgentsDir));
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
469
485
|
// Generate aggregated AGENTS.md
|
|
470
486
|
if (allAgentFiles.length > 0 && !commandsOnly && !skillsOnly && !rulesOnly) {
|
|
471
487
|
const agentsMdPath = path.join(target, 'AGENTS.md');
|
|
@@ -500,6 +516,22 @@ export async function deploy(opts) {
|
|
|
500
516
|
commandFiles.push(...listMdFilesRecursive(marketingCommandsDir));
|
|
501
517
|
}
|
|
502
518
|
|
|
519
|
+
// Media Curator framework
|
|
520
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
521
|
+
const curatorCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'commands');
|
|
522
|
+
if (fs.existsSync(curatorCommandsDir)) {
|
|
523
|
+
commandFiles.push(...listMdFilesRecursive(curatorCommandsDir));
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// Research framework
|
|
528
|
+
if (mode === 'research' || mode === 'all') {
|
|
529
|
+
const researchCommandsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'commands');
|
|
530
|
+
if (fs.existsSync(researchCommandsDir)) {
|
|
531
|
+
commandFiles.push(...listMdFilesRecursive(researchCommandsDir));
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
503
535
|
if (commandFiles.length > 0) {
|
|
504
536
|
deployWorkflows(commandFiles, target, opts);
|
|
505
537
|
}
|
|
@@ -526,6 +558,22 @@ export async function deploy(opts) {
|
|
|
526
558
|
skillDirs.push(...listSkillDirs(marketingSkillsDir));
|
|
527
559
|
}
|
|
528
560
|
|
|
561
|
+
// Media Curator framework
|
|
562
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
563
|
+
const curatorSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'skills');
|
|
564
|
+
if (fs.existsSync(curatorSkillsDir)) {
|
|
565
|
+
skillDirs.push(...listSkillDirs(curatorSkillsDir));
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
// Research framework
|
|
570
|
+
if (mode === 'research' || mode === 'all') {
|
|
571
|
+
const researchSkillsDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'skills');
|
|
572
|
+
if (fs.existsSync(researchSkillsDir)) {
|
|
573
|
+
skillDirs.push(...listSkillDirs(researchSkillsDir));
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
529
577
|
if (skillDirs.length > 0) {
|
|
530
578
|
console.log(`\nDeploying ${skillDirs.length} skills...`);
|
|
531
579
|
deploySkills(skillDirs, target, opts);
|
|
@@ -560,6 +608,22 @@ export async function deploy(opts) {
|
|
|
560
608
|
ruleFiles.push(...listMdFiles(marketingRulesDir));
|
|
561
609
|
}
|
|
562
610
|
|
|
611
|
+
// Media Curator framework
|
|
612
|
+
if (mode === 'media-curator' || mode === 'all') {
|
|
613
|
+
const curatorRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'media-curator', 'rules');
|
|
614
|
+
if (fs.existsSync(curatorRulesDir)) {
|
|
615
|
+
ruleFiles.push(...listMdFiles(curatorRulesDir));
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
// Research framework
|
|
620
|
+
if (mode === 'research' || mode === 'all') {
|
|
621
|
+
const researchRulesDir = path.join(srcRoot, 'agentic', 'code', 'frameworks', 'research-complete', 'rules');
|
|
622
|
+
if (fs.existsSync(researchRulesDir)) {
|
|
623
|
+
ruleFiles.push(...listMdFiles(researchRulesDir));
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
|
|
563
627
|
if (ruleFiles.length > 0) {
|
|
564
628
|
console.log(`\nDeploying ${ruleFiles.length} rules...`);
|
|
565
629
|
deployRules(ruleFiles, target, opts);
|
|
File without changes
|