@every-env/compound-plugin 0.7.0 → 0.9.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/.cursor-plugin/marketplace.json +25 -0
- package/CHANGELOG.md +21 -0
- package/README.md +18 -8
- package/bun.lock +1 -0
- package/docs/brainstorms/2026-02-14-copilot-converter-target-brainstorm.md +117 -0
- package/docs/brainstorms/2026-02-17-copilot-skill-naming-brainstorm.md +30 -0
- package/docs/plans/2026-02-14-feat-add-copilot-converter-target-plan.md +328 -0
- package/docs/specs/copilot.md +122 -0
- package/docs/specs/kiro.md +171 -0
- package/package.json +1 -1
- package/plugins/coding-tutor/.cursor-plugin/plugin.json +21 -0
- package/plugins/compound-engineering/.claude-plugin/plugin.json +1 -1
- package/plugins/compound-engineering/.cursor-plugin/plugin.json +31 -0
- package/plugins/compound-engineering/.mcp.json +8 -0
- package/plugins/compound-engineering/CHANGELOG.md +10 -0
- package/plugins/compound-engineering/commands/lfg.md +3 -3
- package/plugins/compound-engineering/commands/slfg.md +2 -2
- package/plugins/compound-engineering/commands/workflows/plan.md +15 -1
- package/src/commands/convert.ts +2 -1
- package/src/commands/install.ts +9 -1
- package/src/commands/sync.ts +8 -8
- package/src/converters/{claude-to-cursor.ts → claude-to-copilot.ts} +93 -49
- package/src/converters/claude-to-kiro.ts +262 -0
- package/src/sync/{cursor.ts → copilot.ts} +36 -14
- package/src/targets/copilot.ts +48 -0
- package/src/targets/index.ts +18 -9
- package/src/targets/kiro.ts +122 -0
- package/src/types/copilot.ts +31 -0
- package/src/types/kiro.ts +44 -0
- package/src/utils/frontmatter.ts +1 -1
- package/tests/copilot-converter.test.ts +467 -0
- package/tests/copilot-writer.test.ts +189 -0
- package/tests/kiro-converter.test.ts +381 -0
- package/tests/kiro-writer.test.ts +273 -0
- package/tests/sync-copilot.test.ts +148 -0
- package/src/targets/cursor.ts +0 -48
- package/src/types/cursor.ts +0 -29
- package/tests/cursor-converter.test.ts +0 -347
- package/tests/cursor-writer.test.ts +0 -137
- package/tests/sync-cursor.test.ts +0 -92
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# GitHub Copilot Spec (Agents, Skills, MCP)
|
|
2
|
+
|
|
3
|
+
Last verified: 2026-02-14
|
|
4
|
+
|
|
5
|
+
## Primary sources
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
https://docs.github.com/en/copilot/reference/custom-agents-configuration
|
|
9
|
+
https://docs.github.com/en/copilot/concepts/agents/about-agent-skills
|
|
10
|
+
https://docs.github.com/en/copilot/concepts/agents/coding-agent/mcp-and-coding-agent
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Config locations
|
|
14
|
+
|
|
15
|
+
| Scope | Path |
|
|
16
|
+
|-------|------|
|
|
17
|
+
| Project agents | `.github/agents/*.agent.md` |
|
|
18
|
+
| Project skills | `.github/skills/*/SKILL.md` |
|
|
19
|
+
| Project instructions | `.github/copilot-instructions.md` |
|
|
20
|
+
| Path-specific instructions | `.github/instructions/*.instructions.md` |
|
|
21
|
+
| Project prompts | `.github/prompts/*.prompt.md` |
|
|
22
|
+
| Org/enterprise agents | `.github-private/agents/*.agent.md` |
|
|
23
|
+
| Personal skills | `~/.copilot/skills/*/SKILL.md` |
|
|
24
|
+
| Directory instructions | `AGENTS.md` (nearest ancestor wins) |
|
|
25
|
+
|
|
26
|
+
## Agents (.agent.md files)
|
|
27
|
+
|
|
28
|
+
- Custom agents are Markdown files with YAML frontmatter stored in `.github/agents/`.
|
|
29
|
+
- File extension is `.agent.md` (or `.md`). Filenames may only contain: `.`, `-`, `_`, `a-z`, `A-Z`, `0-9`.
|
|
30
|
+
- `description` is the only required frontmatter field.
|
|
31
|
+
|
|
32
|
+
### Frontmatter fields
|
|
33
|
+
|
|
34
|
+
| Field | Required | Default | Description |
|
|
35
|
+
|-------|----------|---------|-------------|
|
|
36
|
+
| `name` | No | Derived from filename | Display name |
|
|
37
|
+
| `description` | **Yes** | — | What the agent does |
|
|
38
|
+
| `tools` | No | `["*"]` | Tool access list. `[]` disables all tools. |
|
|
39
|
+
| `target` | No | both | `vscode`, `github-copilot`, or omit for both |
|
|
40
|
+
| `infer` | No | `true` | Auto-select based on task context |
|
|
41
|
+
| `model` | No | Platform default | AI model (works in IDE, may be ignored on github.com) |
|
|
42
|
+
| `mcp-servers` | No | — | MCP config (org/enterprise agents only) |
|
|
43
|
+
| `metadata` | No | — | Arbitrary key-value annotations |
|
|
44
|
+
|
|
45
|
+
### Character limit
|
|
46
|
+
|
|
47
|
+
Agent body content is limited to **30,000 characters**.
|
|
48
|
+
|
|
49
|
+
### Tool names
|
|
50
|
+
|
|
51
|
+
| Name | Aliases | Purpose |
|
|
52
|
+
|------|---------|---------|
|
|
53
|
+
| `execute` | `shell`, `Bash` | Run shell commands |
|
|
54
|
+
| `read` | `Read` | Read files |
|
|
55
|
+
| `edit` | `Edit`, `Write` | Modify files |
|
|
56
|
+
| `search` | `Grep`, `Glob` | Search files |
|
|
57
|
+
| `agent` | `Task` | Invoke other agents |
|
|
58
|
+
| `web` | `WebSearch`, `WebFetch` | Web access |
|
|
59
|
+
|
|
60
|
+
## Skills (SKILL.md)
|
|
61
|
+
|
|
62
|
+
- Skills follow the open SKILL.md standard (same format as Claude Code and Cursor).
|
|
63
|
+
- A skill is a directory containing `SKILL.md` plus optional `scripts/`, `references/`, and `assets/`.
|
|
64
|
+
- YAML frontmatter requires `name` and `description` fields.
|
|
65
|
+
- Skills are loaded on-demand when Copilot determines relevance.
|
|
66
|
+
|
|
67
|
+
### Discovery locations
|
|
68
|
+
|
|
69
|
+
| Scope | Path |
|
|
70
|
+
|-------|------|
|
|
71
|
+
| Project | `.github/skills/*/SKILL.md` |
|
|
72
|
+
| Project (Claude-compatible) | `.claude/skills/*/SKILL.md` |
|
|
73
|
+
| Project (auto-discovery) | `.agents/skills/*/SKILL.md` |
|
|
74
|
+
| Personal | `~/.copilot/skills/*/SKILL.md` |
|
|
75
|
+
|
|
76
|
+
## MCP (Model Context Protocol)
|
|
77
|
+
|
|
78
|
+
- MCP configuration is set via **Repository Settings > Copilot > Coding agent > MCP configuration** on GitHub.
|
|
79
|
+
- Repository-level agents **cannot** define MCP servers inline; use repository settings instead.
|
|
80
|
+
- Org/enterprise agents can embed MCP server definitions in frontmatter.
|
|
81
|
+
- All env var names must use the `COPILOT_MCP_` prefix.
|
|
82
|
+
- Only MCP tools are supported (not resources or prompts).
|
|
83
|
+
|
|
84
|
+
### Config structure
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"mcpServers": {
|
|
89
|
+
"server-name": {
|
|
90
|
+
"type": "local",
|
|
91
|
+
"command": "npx",
|
|
92
|
+
"args": ["package"],
|
|
93
|
+
"tools": ["*"],
|
|
94
|
+
"env": {
|
|
95
|
+
"API_KEY": "COPILOT_MCP_API_KEY"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Server types
|
|
103
|
+
|
|
104
|
+
| Type | Fields |
|
|
105
|
+
|------|--------|
|
|
106
|
+
| Local/stdio | `type: "local"`, `command`, `args`, `tools`, `env` |
|
|
107
|
+
| Remote/SSE | `type: "sse"`, `url`, `tools`, `headers` |
|
|
108
|
+
|
|
109
|
+
## Prompts (.prompt.md)
|
|
110
|
+
|
|
111
|
+
- Reusable prompt files stored in `.github/prompts/`.
|
|
112
|
+
- Available in VS Code, Visual Studio, and JetBrains IDEs only (not on github.com).
|
|
113
|
+
- Invoked via `/promptname` in chat.
|
|
114
|
+
- Support variable syntax: `${input:name}`, `${file}`, `${selection}`.
|
|
115
|
+
|
|
116
|
+
## Precedence
|
|
117
|
+
|
|
118
|
+
1. Repository-level agents
|
|
119
|
+
2. Organization-level agents (`.github-private`)
|
|
120
|
+
3. Enterprise-level agents (`.github-private`)
|
|
121
|
+
|
|
122
|
+
Within a repo, `AGENTS.md` files in directories provide nearest-ancestor-wins instructions.
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Kiro CLI Spec (Custom Agents, Skills, Steering, MCP, Settings)
|
|
2
|
+
|
|
3
|
+
Last verified: 2026-02-17
|
|
4
|
+
|
|
5
|
+
## Primary sources
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
https://kiro.dev/docs/cli/
|
|
9
|
+
https://kiro.dev/docs/cli/custom-agents/configuration-reference/
|
|
10
|
+
https://kiro.dev/docs/cli/skills/
|
|
11
|
+
https://kiro.dev/docs/cli/steering/
|
|
12
|
+
https://kiro.dev/docs/cli/mcp/
|
|
13
|
+
https://kiro.dev/docs/cli/hooks/
|
|
14
|
+
https://agentskills.io
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Config locations
|
|
18
|
+
|
|
19
|
+
- Project-level config: `.kiro/` directory at project root.
|
|
20
|
+
- No global/user-level config directory — all config is project-scoped.
|
|
21
|
+
|
|
22
|
+
## Directory structure
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
.kiro/
|
|
26
|
+
├── agents/
|
|
27
|
+
│ ├── <name>.json # Agent configuration
|
|
28
|
+
│ └── prompts/
|
|
29
|
+
│ └── <name>.md # Agent prompt files
|
|
30
|
+
├── skills/
|
|
31
|
+
│ └── <name>/
|
|
32
|
+
│ └── SKILL.md # Skill definition
|
|
33
|
+
├── steering/
|
|
34
|
+
│ └── <name>.md # Always-on context files
|
|
35
|
+
└── settings/
|
|
36
|
+
└── mcp.json # MCP server configuration
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Custom agents (JSON config + prompt files)
|
|
40
|
+
|
|
41
|
+
- Custom agents are JSON files in `.kiro/agents/`.
|
|
42
|
+
- Each agent has a corresponding prompt `.md` file, referenced via `file://` URI.
|
|
43
|
+
- Agent config has 14 possible fields (see below).
|
|
44
|
+
- Agents are activated by user selection (no auto-activation).
|
|
45
|
+
- The converter outputs a subset of fields relevant to converted plugins.
|
|
46
|
+
|
|
47
|
+
### Agent config fields
|
|
48
|
+
|
|
49
|
+
| Field | Type | Used in conversion | Notes |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| `name` | string | Yes | Agent display name |
|
|
52
|
+
| `description` | string | Yes | Human-readable description |
|
|
53
|
+
| `prompt` | string or `file://` URI | Yes | System prompt or file reference |
|
|
54
|
+
| `tools` | string[] | Yes (`["*"]`) | Available tools |
|
|
55
|
+
| `resources` | string[] | Yes | `file://`, `skill://`, `knowledgeBase` URIs |
|
|
56
|
+
| `includeMcpJson` | boolean | Yes (`true`) | Inherit project MCP servers |
|
|
57
|
+
| `welcomeMessage` | string | Yes | Agent switch greeting |
|
|
58
|
+
| `mcpServers` | object | No | Per-agent MCP config (use includeMcpJson instead) |
|
|
59
|
+
| `toolAliases` | Record | No | Tool name remapping |
|
|
60
|
+
| `allowedTools` | string[] | No | Auto-approve patterns |
|
|
61
|
+
| `toolsSettings` | object | No | Per-tool configuration |
|
|
62
|
+
| `hooks` | object | No (future work) | 5 trigger types |
|
|
63
|
+
| `model` | string | No | Model selection |
|
|
64
|
+
| `keyboardShortcut` | string | No | Quick-switch shortcut |
|
|
65
|
+
|
|
66
|
+
### Example agent config
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"name": "security-reviewer",
|
|
71
|
+
"description": "Reviews code for security vulnerabilities",
|
|
72
|
+
"prompt": "file://./prompts/security-reviewer.md",
|
|
73
|
+
"tools": ["*"],
|
|
74
|
+
"resources": [
|
|
75
|
+
"file://.kiro/steering/**/*.md",
|
|
76
|
+
"skill://.kiro/skills/**/SKILL.md"
|
|
77
|
+
],
|
|
78
|
+
"includeMcpJson": true,
|
|
79
|
+
"welcomeMessage": "Switching to security-reviewer. Reviews code for security vulnerabilities"
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Skills (SKILL.md standard)
|
|
84
|
+
|
|
85
|
+
- Skills follow the open [Agent Skills](https://agentskills.io) standard.
|
|
86
|
+
- A skill is a folder containing `SKILL.md` plus optional supporting files.
|
|
87
|
+
- Skills live in `.kiro/skills/`.
|
|
88
|
+
- `SKILL.md` uses YAML frontmatter with `name` and `description` fields.
|
|
89
|
+
- Kiro activates skills on demand based on description matching.
|
|
90
|
+
- The `description` field is critical — Kiro uses it to decide when to activate the skill.
|
|
91
|
+
|
|
92
|
+
### Constraints
|
|
93
|
+
|
|
94
|
+
- Skill name: max 64 characters, pattern `^[a-z][a-z0-9-]*$`, no consecutive hyphens (`--`).
|
|
95
|
+
- Skill description: max 1024 characters.
|
|
96
|
+
- Skill name must match parent directory name.
|
|
97
|
+
|
|
98
|
+
### Example
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
---
|
|
102
|
+
name: workflows-plan
|
|
103
|
+
description: Plan work by analyzing requirements and creating actionable steps
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Planning Workflow
|
|
107
|
+
|
|
108
|
+
Detailed instructions...
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Steering files
|
|
112
|
+
|
|
113
|
+
- Markdown files in `.kiro/steering/`.
|
|
114
|
+
- Always loaded into every agent session's context.
|
|
115
|
+
- Equivalent to Claude Code's CLAUDE.md.
|
|
116
|
+
- Used for project-wide instructions, coding standards, and conventions.
|
|
117
|
+
|
|
118
|
+
## MCP server configuration
|
|
119
|
+
|
|
120
|
+
- MCP servers are configured in `.kiro/settings/mcp.json`.
|
|
121
|
+
- **Only stdio transport is supported** — `command` + `args` + `env`.
|
|
122
|
+
- HTTP/SSE transport (`url`, `headers`) is NOT supported by Kiro CLI.
|
|
123
|
+
- The converter skips HTTP-only MCP servers with a warning.
|
|
124
|
+
|
|
125
|
+
### Example
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"mcpServers": {
|
|
130
|
+
"playwright": {
|
|
131
|
+
"command": "npx",
|
|
132
|
+
"args": ["-y", "@anthropic/mcp-playwright"]
|
|
133
|
+
},
|
|
134
|
+
"context7": {
|
|
135
|
+
"command": "npx",
|
|
136
|
+
"args": ["-y", "@context7/mcp-server"]
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Hooks
|
|
143
|
+
|
|
144
|
+
- Kiro supports 5 hook trigger types: `agentSpawn`, `userPromptSubmit`, `preToolUse`, `postToolUse`, `stop`.
|
|
145
|
+
- Hooks are configured inside agent JSON configs (not separate files).
|
|
146
|
+
- 3 of 5 triggers map to Claude Code hooks (`preToolUse`, `postToolUse`, `stop`).
|
|
147
|
+
- Not converted by the plugin converter for MVP — a warning is emitted.
|
|
148
|
+
|
|
149
|
+
## Conversion lossy mappings
|
|
150
|
+
|
|
151
|
+
| Claude Code Feature | Kiro Status | Notes |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| `Edit` tool (surgical replacement) | Degraded -> `write` (full-file) | Kiro write overwrites entire files |
|
|
154
|
+
| `context: fork` | Lost | No execution isolation control |
|
|
155
|
+
| `!`command`` dynamic injection | Lost | No pre-processing of markdown |
|
|
156
|
+
| `disable-model-invocation` | Lost | No invocation control |
|
|
157
|
+
| `allowed-tools` per skill | Lost | No tool permission scoping per skill |
|
|
158
|
+
| `$ARGUMENTS` interpolation | Lost | No structured argument passing |
|
|
159
|
+
| Claude hooks | Skipped | Future follow-up (near-1:1 for 3/5 triggers) |
|
|
160
|
+
| HTTP MCP servers | Skipped | Kiro only supports stdio transport |
|
|
161
|
+
|
|
162
|
+
## Overwrite behavior during conversion
|
|
163
|
+
|
|
164
|
+
| Content Type | Strategy | Rationale |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
| Generated agents (JSON + prompt) | Overwrite | Generated, not user-authored |
|
|
167
|
+
| Generated skills (from commands) | Overwrite | Generated, not user-authored |
|
|
168
|
+
| Copied skills (pass-through) | Overwrite | Plugin is source of truth |
|
|
169
|
+
| Steering files | Overwrite | Generated from CLAUDE.md |
|
|
170
|
+
| `mcp.json` | Merge with backup | User may have added their own servers |
|
|
171
|
+
| User-created agents/skills | Preserved | Don't delete orphans |
|
package/package.json
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "coding-tutor",
|
|
3
|
+
"displayName": "Coding Tutor",
|
|
4
|
+
"version": "1.2.1",
|
|
5
|
+
"description": "Personalized coding tutorials that use your actual codebase for examples with spaced repetition quizzes",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Nityesh Agarwal"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/EveryInc/compound-engineering-plugin",
|
|
10
|
+
"repository": "https://github.com/EveryInc/compound-engineering-plugin",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"cursor",
|
|
14
|
+
"plugin",
|
|
15
|
+
"coding",
|
|
16
|
+
"programming",
|
|
17
|
+
"tutorial",
|
|
18
|
+
"learning",
|
|
19
|
+
"spaced-repetition"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "compound-engineering",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.0",
|
|
4
4
|
"description": "AI-powered development tools. 29 agents, 22 commands, 19 skills, 1 MCP server for code review, research, design, and workflow automation.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Kieran Klaassen",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "compound-engineering",
|
|
3
|
+
"displayName": "Compound Engineering",
|
|
4
|
+
"version": "2.33.0",
|
|
5
|
+
"description": "AI-powered development tools. 29 agents, 22 commands, 19 skills, 1 MCP server for code review, research, design, and workflow automation.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Kieran Klaassen",
|
|
8
|
+
"email": "kieran@every.to",
|
|
9
|
+
"url": "https://github.com/kieranklaassen"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://every.to/source-code/my-ai-had-already-fixed-the-code-before-i-saw-it",
|
|
12
|
+
"repository": "https://github.com/EveryInc/compound-engineering-plugin",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"cursor",
|
|
16
|
+
"plugin",
|
|
17
|
+
"ai-powered",
|
|
18
|
+
"compound-engineering",
|
|
19
|
+
"workflow-automation",
|
|
20
|
+
"code-review",
|
|
21
|
+
"rails",
|
|
22
|
+
"ruby",
|
|
23
|
+
"python",
|
|
24
|
+
"typescript",
|
|
25
|
+
"knowledge-management",
|
|
26
|
+
"image-generation",
|
|
27
|
+
"agent-browser",
|
|
28
|
+
"browser-automation"
|
|
29
|
+
],
|
|
30
|
+
"mcpServers": ".mcp.json"
|
|
31
|
+
}
|
|
@@ -5,6 +5,16 @@ All notable changes to the compound-engineering plugin will be documented in thi
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.35.0] - 2026-02-17
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **`/lfg` and `/slfg` first-run failures** — Made ralph-loop step optional with graceful fallback when `ralph-wiggum` skill is not installed (#154). Added explicit "do not stop" instruction across all steps (#134).
|
|
13
|
+
- **`/workflows:plan` not writing file in pipeline** — Added mandatory "Write Plan File" step with explicit Write tool instructions before Post-Generation Options. The file is now always written to disk before any interactive prompts (#155). Also adds pipeline-mode note to skip AskUserQuestion calls when invoked from LFG/SLFG (#134).
|
|
14
|
+
- **Agent namespace typo in `/workflows:plan`** — `Task spec-flow-analyzer(...)` now uses the full qualified name `Task compound-engineering:workflow:spec-flow-analyzer(...)` to prevent Claude from prepending the wrong `workflows:` prefix (#193).
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
8
18
|
## [2.34.0] - 2026-02-14
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -5,9 +5,9 @@ argument-hint: "[feature description]"
|
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
Run these slash commands in order. Do not do anything else.
|
|
8
|
+
Run these slash commands in order. Do not do anything else. Do not stop between steps — complete every step through to the end.
|
|
9
9
|
|
|
10
|
-
1. `/ralph-wiggum:ralph-loop "finish all slash commands" --completion-promise "DONE"
|
|
10
|
+
1. **Optional:** If the `ralph-wiggum` skill is available, run `/ralph-wiggum:ralph-loop "finish all slash commands" --completion-promise "DONE"`. If not available or it fails, skip and continue to step 2 immediately.
|
|
11
11
|
2. `/workflows:plan $ARGUMENTS`
|
|
12
12
|
3. `/compound-engineering:deepen-plan`
|
|
13
13
|
4. `/workflows:work`
|
|
@@ -17,4 +17,4 @@ Run these slash commands in order. Do not do anything else.
|
|
|
17
17
|
8. `/compound-engineering:feature-video`
|
|
18
18
|
9. Output `<promise>DONE</promise>` when video is in PR
|
|
19
19
|
|
|
20
|
-
Start with step 1
|
|
20
|
+
Start with step 2 now (or step 1 if ralph-wiggum is available).
|
|
@@ -5,11 +5,11 @@ argument-hint: "[feature description]"
|
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
Swarm-enabled LFG. Run these steps in order, parallelizing where indicated.
|
|
8
|
+
Swarm-enabled LFG. Run these steps in order, parallelizing where indicated. Do not stop between steps — complete every step through to the end.
|
|
9
9
|
|
|
10
10
|
## Sequential Phase
|
|
11
11
|
|
|
12
|
-
1. `/ralph-wiggum:ralph-loop "finish all slash commands" --completion-promise "DONE"
|
|
12
|
+
1. **Optional:** If the `ralph-wiggum` skill is available, run `/ralph-wiggum:ralph-loop "finish all slash commands" --completion-promise "DONE"`. If not available or it fails, skip and continue to step 2 immediately.
|
|
13
13
|
2. `/workflows:plan $ARGUMENTS`
|
|
14
14
|
3. `/compound-engineering:deepen-plan`
|
|
15
15
|
4. `/workflows:work` — **Use swarm mode**: Make a Task list and launch an army of agent swarm subagents to build the plan
|
|
@@ -150,7 +150,7 @@ Think like a product manager - what would make this issue clear and actionable?
|
|
|
150
150
|
|
|
151
151
|
After planning the issue structure, run SpecFlow Analyzer to validate and refine the feature specification:
|
|
152
152
|
|
|
153
|
-
- Task spec-flow-analyzer(feature_description, research_findings)
|
|
153
|
+
- Task compound-engineering:workflow:spec-flow-analyzer(feature_description, research_findings)
|
|
154
154
|
|
|
155
155
|
**SpecFlow Analyzer Output:**
|
|
156
156
|
|
|
@@ -475,6 +475,20 @@ end
|
|
|
475
475
|
- [ ] Add names of files in pseudo code examples and todo lists
|
|
476
476
|
- [ ] Add an ERD mermaid diagram if applicable for new model changes
|
|
477
477
|
|
|
478
|
+
## Write Plan File
|
|
479
|
+
|
|
480
|
+
**REQUIRED: Write the plan file to disk before presenting any options.**
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
mkdir -p docs/plans/
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Use the Write tool to save the complete plan to `docs/plans/YYYY-MM-DD-<type>-<descriptive-name>-plan.md`. This step is mandatory and cannot be skipped — even when running as part of LFG/SLFG or other automated pipelines.
|
|
487
|
+
|
|
488
|
+
Confirm: "Plan written to docs/plans/[filename]"
|
|
489
|
+
|
|
490
|
+
**Pipeline mode:** If invoked from an automated workflow (LFG, SLFG, or any `disable-model-invocation` context), skip all AskUserQuestion calls. Make decisions automatically and proceed to writing the plan without interactive prompts.
|
|
491
|
+
|
|
478
492
|
## Output Format
|
|
479
493
|
|
|
480
494
|
**Filename:** Use the date and kebab-case filename from Step 2 Title & Categorization.
|
package/src/commands/convert.ts
CHANGED
|
@@ -23,7 +23,7 @@ export default defineCommand({
|
|
|
23
23
|
to: {
|
|
24
24
|
type: "string",
|
|
25
25
|
default: "opencode",
|
|
26
|
-
description: "Target format (opencode | codex | droid | cursor | pi | gemini)",
|
|
26
|
+
description: "Target format (opencode | codex | droid | cursor | pi | gemini | kiro)",
|
|
27
27
|
},
|
|
28
28
|
output: {
|
|
29
29
|
type: "string",
|
|
@@ -146,5 +146,6 @@ function resolveTargetOutputRoot(targetName: string, outputRoot: string, codexHo
|
|
|
146
146
|
if (targetName === "droid") return path.join(os.homedir(), ".factory")
|
|
147
147
|
if (targetName === "cursor") return path.join(outputRoot, ".cursor")
|
|
148
148
|
if (targetName === "gemini") return path.join(outputRoot, ".gemini")
|
|
149
|
+
if (targetName === "kiro") return path.join(outputRoot, ".kiro")
|
|
149
150
|
return outputRoot
|
|
150
151
|
}
|
package/src/commands/install.ts
CHANGED
|
@@ -25,7 +25,7 @@ export default defineCommand({
|
|
|
25
25
|
to: {
|
|
26
26
|
type: "string",
|
|
27
27
|
default: "opencode",
|
|
28
|
-
description: "Target format (opencode | codex | droid | cursor | pi | gemini)",
|
|
28
|
+
description: "Target format (opencode | codex | droid | cursor | pi | copilot | gemini | kiro)",
|
|
29
29
|
},
|
|
30
30
|
output: {
|
|
31
31
|
type: "string",
|
|
@@ -187,6 +187,14 @@ function resolveTargetOutputRoot(
|
|
|
187
187
|
const base = hasExplicitOutput ? outputRoot : process.cwd()
|
|
188
188
|
return path.join(base, ".gemini")
|
|
189
189
|
}
|
|
190
|
+
if (targetName === "copilot") {
|
|
191
|
+
const base = hasExplicitOutput ? outputRoot : process.cwd()
|
|
192
|
+
return path.join(base, ".github")
|
|
193
|
+
}
|
|
194
|
+
if (targetName === "kiro") {
|
|
195
|
+
const base = hasExplicitOutput ? outputRoot : process.cwd()
|
|
196
|
+
return path.join(base, ".kiro")
|
|
197
|
+
}
|
|
190
198
|
return outputRoot
|
|
191
199
|
}
|
|
192
200
|
|
package/src/commands/sync.ts
CHANGED
|
@@ -6,10 +6,10 @@ import { syncToOpenCode } from "../sync/opencode"
|
|
|
6
6
|
import { syncToCodex } from "../sync/codex"
|
|
7
7
|
import { syncToPi } from "../sync/pi"
|
|
8
8
|
import { syncToDroid } from "../sync/droid"
|
|
9
|
-
import {
|
|
9
|
+
import { syncToCopilot } from "../sync/copilot"
|
|
10
10
|
import { expandHome } from "../utils/resolve-home"
|
|
11
11
|
|
|
12
|
-
const validTargets = ["opencode", "codex", "pi", "droid", "
|
|
12
|
+
const validTargets = ["opencode", "codex", "pi", "droid", "copilot"] as const
|
|
13
13
|
type SyncTarget = (typeof validTargets)[number]
|
|
14
14
|
|
|
15
15
|
function isValidTarget(value: string): value is SyncTarget {
|
|
@@ -40,21 +40,21 @@ function resolveOutputRoot(target: SyncTarget): string {
|
|
|
40
40
|
return path.join(os.homedir(), ".pi", "agent")
|
|
41
41
|
case "droid":
|
|
42
42
|
return path.join(os.homedir(), ".factory")
|
|
43
|
-
case "
|
|
44
|
-
return path.join(process.cwd(), ".
|
|
43
|
+
case "copilot":
|
|
44
|
+
return path.join(process.cwd(), ".github")
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export default defineCommand({
|
|
49
49
|
meta: {
|
|
50
50
|
name: "sync",
|
|
51
|
-
description: "Sync Claude Code config (~/.claude/) to OpenCode, Codex, Pi, Droid, or
|
|
51
|
+
description: "Sync Claude Code config (~/.claude/) to OpenCode, Codex, Pi, Droid, or Copilot",
|
|
52
52
|
},
|
|
53
53
|
args: {
|
|
54
54
|
target: {
|
|
55
55
|
type: "string",
|
|
56
56
|
required: true,
|
|
57
|
-
description: "Target: opencode | codex | pi | droid |
|
|
57
|
+
description: "Target: opencode | codex | pi | droid | copilot",
|
|
58
58
|
},
|
|
59
59
|
claudeHome: {
|
|
60
60
|
type: "string",
|
|
@@ -97,8 +97,8 @@ export default defineCommand({
|
|
|
97
97
|
case "droid":
|
|
98
98
|
await syncToDroid(config, outputRoot)
|
|
99
99
|
break
|
|
100
|
-
case "
|
|
101
|
-
await
|
|
100
|
+
case "copilot":
|
|
101
|
+
await syncToCopilot(config, outputRoot)
|
|
102
102
|
break
|
|
103
103
|
}
|
|
104
104
|
|