@damian87/omp 0.1.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/.github/agents/architect.md +25 -0
- package/.github/agents/code-reviewer.md +25 -0
- package/.github/agents/designer.md +26 -0
- package/.github/agents/executor.md +24 -0
- package/.github/agents/planner.md +26 -0
- package/.github/agents/researcher.md +26 -0
- package/.github/agents/verifier.md +26 -0
- package/.github/copilot-instructions.md +20 -0
- package/.github/plugin/marketplace.json +30 -0
- package/.github/skills/caveman/SKILL.md +20 -0
- package/.github/skills/code-review/SKILL.md +22 -0
- package/.github/skills/codebase-research/SKILL.md +20 -0
- package/.github/skills/create-skill/SKILL.md +78 -0
- package/.github/skills/create-skill/references/best-practices.md +449 -0
- package/.github/skills/create-skill/references/examples.md +69 -0
- package/.github/skills/create-skill/references/progressive-disclosure.md +25 -0
- package/.github/skills/create-skill/references/skill-structure.md +55 -0
- package/.github/skills/debug/SKILL.md +22 -0
- package/.github/skills/grill-me/SKILL.md +16 -0
- package/.github/skills/jira-ticket/SKILL.md +21 -0
- package/.github/skills/omp-autopilot/SKILL.md +20 -0
- package/.github/skills/prototype/SKILL.md +21 -0
- package/.github/skills/ralph/SKILL.md +20 -0
- package/.github/skills/ralplan/SKILL.md +21 -0
- package/.github/skills/self-evolve/SKILL.md +157 -0
- package/.github/skills/tdd/SKILL.md +19 -0
- package/.github/skills/team/SKILL.md +20 -0
- package/.github/skills/ultraqa/SKILL.md +20 -0
- package/.github/skills/ultrawork/SKILL.md +20 -0
- package/.github/skills/verify/SKILL.md +20 -0
- package/LICENSE +21 -0
- package/README.md +214 -0
- package/catalog/capabilities.json +729 -0
- package/catalog/skills-general.json +427 -0
- package/dist/src/catalog.d.ts +79 -0
- package/dist/src/catalog.js +113 -0
- package/dist/src/catalog.js.map +1 -0
- package/dist/src/cli.d.ts +9 -0
- package/dist/src/cli.js +475 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/copilot/config.d.ts +7 -0
- package/dist/src/copilot/config.js +24 -0
- package/dist/src/copilot/config.js.map +1 -0
- package/dist/src/copilot/doctor.d.ts +18 -0
- package/dist/src/copilot/doctor.js +85 -0
- package/dist/src/copilot/doctor.js.map +1 -0
- package/dist/src/copilot/launch.d.ts +14 -0
- package/dist/src/copilot/launch.js +64 -0
- package/dist/src/copilot/launch.js.map +1 -0
- package/dist/src/copilot/list.d.ts +17 -0
- package/dist/src/copilot/list.js +82 -0
- package/dist/src/copilot/list.js.map +1 -0
- package/dist/src/copilot/paths.d.ts +21 -0
- package/dist/src/copilot/paths.js +36 -0
- package/dist/src/copilot/paths.js.map +1 -0
- package/dist/src/copilot/setup.d.ts +20 -0
- package/dist/src/copilot/setup.js +90 -0
- package/dist/src/copilot/setup.js.map +1 -0
- package/dist/src/copilot/version.d.ts +13 -0
- package/dist/src/copilot/version.js +34 -0
- package/dist/src/copilot/version.js.map +1 -0
- package/dist/src/jira.d.ts +149 -0
- package/dist/src/jira.js +492 -0
- package/dist/src/jira.js.map +1 -0
- package/dist/src/lint.d.ts +11 -0
- package/dist/src/lint.js +85 -0
- package/dist/src/lint.js.map +1 -0
- package/dist/src/mcp/server.d.ts +10 -0
- package/dist/src/mcp/server.js +44 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/tools/index.d.ts +9 -0
- package/dist/src/mcp/tools/index.js +15 -0
- package/dist/src/mcp/tools/index.js.map +1 -0
- package/dist/src/mcp/tools/notepad.d.ts +2 -0
- package/dist/src/mcp/tools/notepad.js +135 -0
- package/dist/src/mcp/tools/notepad.js.map +1 -0
- package/dist/src/mcp/tools/project-memory.d.ts +2 -0
- package/dist/src/mcp/tools/project-memory.js +91 -0
- package/dist/src/mcp/tools/project-memory.js.map +1 -0
- package/dist/src/mcp/tools/shared-memory.d.ts +2 -0
- package/dist/src/mcp/tools/shared-memory.js +148 -0
- package/dist/src/mcp/tools/shared-memory.js.map +1 -0
- package/dist/src/mcp/tools/state.d.ts +2 -0
- package/dist/src/mcp/tools/state.js +107 -0
- package/dist/src/mcp/tools/state.js.map +1 -0
- package/dist/src/mcp/tools/trace.d.ts +10 -0
- package/dist/src/mcp/tools/trace.js +102 -0
- package/dist/src/mcp/tools/trace.js.map +1 -0
- package/dist/src/mcp/types.d.ts +29 -0
- package/dist/src/mcp/types.js +7 -0
- package/dist/src/mcp/types.js.map +1 -0
- package/dist/src/mode-state/index.d.ts +4 -0
- package/dist/src/mode-state/index.js +5 -0
- package/dist/src/mode-state/index.js.map +1 -0
- package/dist/src/mode-state/paths.d.ts +5 -0
- package/dist/src/mode-state/paths.js +29 -0
- package/dist/src/mode-state/paths.js.map +1 -0
- package/dist/src/mode-state/ralph.d.ts +25 -0
- package/dist/src/mode-state/ralph.js +44 -0
- package/dist/src/mode-state/ralph.js.map +1 -0
- package/dist/src/mode-state/ultraqa.d.ts +26 -0
- package/dist/src/mode-state/ultraqa.js +51 -0
- package/dist/src/mode-state/ultraqa.js.map +1 -0
- package/dist/src/mode-state/ultrawork.d.ts +20 -0
- package/dist/src/mode-state/ultrawork.js +34 -0
- package/dist/src/mode-state/ultrawork.js.map +1 -0
- package/dist/src/project.d.ts +29 -0
- package/dist/src/project.js +101 -0
- package/dist/src/project.js.map +1 -0
- package/dist/src/skills.d.ts +17 -0
- package/dist/src/skills.js +61 -0
- package/dist/src/skills.js.map +1 -0
- package/dist/src/sync.d.ts +6 -0
- package/dist/src/sync.js +27 -0
- package/dist/src/sync.js.map +1 -0
- package/dist/src/team/api.d.ts +20 -0
- package/dist/src/team/api.js +55 -0
- package/dist/src/team/api.js.map +1 -0
- package/dist/src/team/heartbeat.d.ts +4 -0
- package/dist/src/team/heartbeat.js +27 -0
- package/dist/src/team/heartbeat.js.map +1 -0
- package/dist/src/team/idle-nudge.d.ts +27 -0
- package/dist/src/team/idle-nudge.js +60 -0
- package/dist/src/team/idle-nudge.js.map +1 -0
- package/dist/src/team/inbox.d.ts +3 -0
- package/dist/src/team/inbox.js +16 -0
- package/dist/src/team/inbox.js.map +1 -0
- package/dist/src/team/index.d.ts +11 -0
- package/dist/src/team/index.js +12 -0
- package/dist/src/team/index.js.map +1 -0
- package/dist/src/team/outbox.d.ts +14 -0
- package/dist/src/team/outbox.js +82 -0
- package/dist/src/team/outbox.js.map +1 -0
- package/dist/src/team/runtime.d.ts +84 -0
- package/dist/src/team/runtime.js +243 -0
- package/dist/src/team/runtime.js.map +1 -0
- package/dist/src/team/state-paths.d.ts +31 -0
- package/dist/src/team/state-paths.js +54 -0
- package/dist/src/team/state-paths.js.map +1 -0
- package/dist/src/team/task-store.d.ts +41 -0
- package/dist/src/team/task-store.js +153 -0
- package/dist/src/team/task-store.js.map +1 -0
- package/dist/src/team/tmux.d.ts +26 -0
- package/dist/src/team/tmux.js +87 -0
- package/dist/src/team/tmux.js.map +1 -0
- package/dist/src/team/types.d.ts +45 -0
- package/dist/src/team/types.js +2 -0
- package/dist/src/team/types.js.map +1 -0
- package/dist/src/team/worker-bootstrap.d.ts +8 -0
- package/dist/src/team/worker-bootstrap.js +52 -0
- package/dist/src/team/worker-bootstrap.js.map +1 -0
- package/docs/copilot-distribution.md +100 -0
- package/docs/general-skills.md +76 -0
- package/docs/jira.md +64 -0
- package/docs/self-evolve.md +22 -0
- package/hooks/hooks.json +74 -0
- package/package.json +58 -0
- package/plugin.json +14 -0
- package/scripts/error.mjs +31 -0
- package/scripts/lib/hook-output.mjs +30 -0
- package/scripts/lib/stdin.mjs +29 -0
- package/scripts/post-tool-use.mjs +31 -0
- package/scripts/pre-tool-use.mjs +30 -0
- package/scripts/prompt-submit.mjs +66 -0
- package/scripts/session-end.mjs +29 -0
- package/scripts/session-start.mjs +33 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ralph
|
|
3
|
+
description: Single-owner execute-fix-verify loop for one clear task. Use with /ralph when one agent should keep going until evidence or blocker.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ralph
|
|
7
|
+
|
|
8
|
+
Use `/ralph` when one owner should complete one clear task.
|
|
9
|
+
|
|
10
|
+
Do:
|
|
11
|
+
- Start from a plan or concrete task.
|
|
12
|
+
- Implement in small steps.
|
|
13
|
+
- Verify after each meaningful change.
|
|
14
|
+
- Fix failures before claiming done.
|
|
15
|
+
- Stop only with evidence or a blocker.
|
|
16
|
+
|
|
17
|
+
Output:
|
|
18
|
+
- `Done`
|
|
19
|
+
- `Evidence`
|
|
20
|
+
- `Known gaps`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ralplan
|
|
3
|
+
description: Produce an implementation-ready plan with risks, acceptance criteria, and test shape. Use with /ralplan when edits need planning first.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ralplan
|
|
7
|
+
|
|
8
|
+
Use `/ralplan` when the task needs planning before edits.
|
|
9
|
+
|
|
10
|
+
Do:
|
|
11
|
+
- Summarize target result and constraints.
|
|
12
|
+
- List implementation slices in order.
|
|
13
|
+
- Define acceptance criteria and tests.
|
|
14
|
+
- Call out risks and tradeoffs.
|
|
15
|
+
- Stop at a plan unless user asked to implement.
|
|
16
|
+
|
|
17
|
+
Output:
|
|
18
|
+
- `Plan`
|
|
19
|
+
- `Tests`
|
|
20
|
+
- `Risks`
|
|
21
|
+
- `Ready for` — `/team`, `/ralph`, `/ultrawork`, or direct edit.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: self-evolve
|
|
3
|
+
description: Capture user-correction patterns from this session and, when a pattern recurs, draft a new project skill. Use at end of session, when the user signals wrap-up, or when invoked directly.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Self-Evolve
|
|
7
|
+
|
|
8
|
+
Use `/self-evolve` to turn this session's mistakes into reusable project skills.
|
|
9
|
+
|
|
10
|
+
## When to run
|
|
11
|
+
|
|
12
|
+
- User signals end-of-session ("done", "bye", "thanks", "/exit", "wrapping up", "ship it").
|
|
13
|
+
- You finish the user's last task with no pending todos and they have not requested follow-up.
|
|
14
|
+
- The user invokes `/self-evolve` directly.
|
|
15
|
+
|
|
16
|
+
**Skip if:** the session was fewer than 3 turns, or the session contained no user corrections.
|
|
17
|
+
|
|
18
|
+
## What counts as a "correction"
|
|
19
|
+
|
|
20
|
+
A user message right after one of your responses that pushes back on what you did. Signal phrases (case-insensitive):
|
|
21
|
+
|
|
22
|
+
- explicit rejection: "no", "wrong", "that's wrong", "not what i asked", "undo", "revert"
|
|
23
|
+
- redirection: "wait", "stop", "actually", "instead", "rather"
|
|
24
|
+
- prohibition: "don't", "do not"
|
|
25
|
+
|
|
26
|
+
Ignore false positives ("no problem", "stop the server", "don't worry") by checking that the phrase rebukes your prior action.
|
|
27
|
+
|
|
28
|
+
## The loop
|
|
29
|
+
|
|
30
|
+
### 0. Once-per-session guard
|
|
31
|
+
|
|
32
|
+
Two checks. If **either** trips, stop immediately, say "self-evolve already ran this session", and do nothing else.
|
|
33
|
+
|
|
34
|
+
**Exception (both checks):** if the user explicitly retyped `/self-evolve` to force a re-run, skip both checks.
|
|
35
|
+
|
|
36
|
+
**Check A — conversation memory.** If you have already invoked `/self-evolve` in this conversation, stop.
|
|
37
|
+
|
|
38
|
+
**Check B — durable marker.** Read `.oh-my-copilot/self-evolve/.last-run-session` (single-line UUID, may not exist). Determine the current Copilot CLI session UUID via shell:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
ls -td ~/.copilot/session-state/*/ 2>/dev/null | head -1 | xargs -n1 basename
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
If the marker file exists and its contents match the current session UUID, stop. (If `~/.copilot/session-state/` is empty or unreadable, skip Check B and rely on Check A alone.)
|
|
45
|
+
|
|
46
|
+
Check B survives session resume (`copilot --resume`) and conversation compaction, where Check A could miss the earlier invocation.
|
|
47
|
+
|
|
48
|
+
### 1. Inspect this session
|
|
49
|
+
|
|
50
|
+
Walk back through the conversation and list every correction event. For each, record:
|
|
51
|
+
|
|
52
|
+
- **topic** — short kebab-case label (e.g. `trailing-newline-shell-output`, `python-string-quotes`, `unwanted-readme-edits`)
|
|
53
|
+
- **area** — file path or subsystem the correction touched, or `-` if none
|
|
54
|
+
- **summary** — one sentence: what you did wrong and what the user wanted instead
|
|
55
|
+
|
|
56
|
+
### 2. Append to the ledger
|
|
57
|
+
|
|
58
|
+
The ledger lives at `.oh-my-copilot/self-evolve/log.md`. Create the directory and file if missing. Append one entry per correction in this exact shape:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
- YYYY-MM-DD | <topic> | <area> | <summary>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Keep entries chronological. Never rewrite past entries.
|
|
65
|
+
|
|
66
|
+
### 3. Count repeats
|
|
67
|
+
|
|
68
|
+
For each new topic from this session, grep the ledger for the same topic label. The count includes today's entries.
|
|
69
|
+
|
|
70
|
+
**Threshold: 3 occurrences.** Fewer → stop here.
|
|
71
|
+
|
|
72
|
+
### 4. Check existing coverage
|
|
73
|
+
|
|
74
|
+
Before drafting, list:
|
|
75
|
+
|
|
76
|
+
- `.github/skills/*/SKILL.md` (project skills, including any previously promoted `learned-*`)
|
|
77
|
+
- `.oh-my-copilot/self-evolve/drafts/*/SKILL.md` (in-flight drafts not yet promoted)
|
|
78
|
+
- `~/.copilot/skills/*/SKILL.md` (user skills, if present)
|
|
79
|
+
|
|
80
|
+
**Match bar (high, not vague).** A skill counts as covering this topic only if:
|
|
81
|
+
|
|
82
|
+
- its frontmatter `description` explicitly names the exact behavior the user kept correcting, **OR**
|
|
83
|
+
- it contains a `Do` or `Don't` bullet that, applied literally, would have prevented every correction in the cluster.
|
|
84
|
+
|
|
85
|
+
Generic adjacency does **not** count. A "code quality" skill does not cover "respect Python quote style"; a "respect-quotes" skill does. When in doubt, treat as not covered.
|
|
86
|
+
|
|
87
|
+
**If clearly covered**, do not draft. Append one note to the ledger and stop:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
# covered-by: <existing-skill-name> | <topic>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**If covered ambiguously** (some bullets are adjacent but none are a direct match), still draft — but add a line to the new draft's `Source` section noting the overlap, so a human reviewer can decide on merge or supersede:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
possible-duplicate-of: <existing-skill-name>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Bias: when unsure, draft. Drafts live in `.oh-my-copilot/self-evolve/drafts/` and are inert until a human promotes them, so a stray draft costs nothing while a missed pattern wastes signal.
|
|
100
|
+
|
|
101
|
+
### 5. Draft the new skill
|
|
102
|
+
|
|
103
|
+
**Path:** `.oh-my-copilot/self-evolve/drafts/<slug>/SKILL.md`
|
|
104
|
+
|
|
105
|
+
**This is outside `.github/skills/` on purpose.** Drafts must NOT live in the plugin's active skill root: anything under `.github/skills/` is loaded as an active skill on the next Copilot session, so a draft there would silently auto-arm before a human reviewed it. The `.oh-my-copilot/self-evolve/drafts/` location is never read by Copilot CLI; a human promotes a draft by moving its directory to `.github/skills/learned-<slug>/` (see `docs/self-evolve.md`).
|
|
106
|
+
|
|
107
|
+
- Slug rule: kebab-case of the topic, max 40 chars.
|
|
108
|
+
- The draft's frontmatter `name` should be `learned-<slug>` (matches the target dir name a human will promote it into).
|
|
109
|
+
|
|
110
|
+
Write the file with this exact frontmatter and body:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
---
|
|
114
|
+
name: learned-<slug>
|
|
115
|
+
description: <one sentence — when this skill should fire>
|
|
116
|
+
status: draft
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
# Learned: <human title>
|
|
120
|
+
|
|
121
|
+
Invoke `/learned-<slug>` when the trigger below applies.
|
|
122
|
+
|
|
123
|
+
## Trigger
|
|
124
|
+
<one-line condition derived from the recurring corrections>
|
|
125
|
+
|
|
126
|
+
## Do
|
|
127
|
+
<concrete instruction(s) that would have prevented the corrections>
|
|
128
|
+
|
|
129
|
+
## Don't
|
|
130
|
+
<the wrong behaviour you kept doing>
|
|
131
|
+
|
|
132
|
+
## Source
|
|
133
|
+
Drafted by /self-evolve from 3+ corrections in .oh-my-copilot/self-evolve/log.md.
|
|
134
|
+
Promote to active by moving this directory to .github/skills/learned-<slug>/.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 6. Report to the user
|
|
138
|
+
|
|
139
|
+
State:
|
|
140
|
+
|
|
141
|
+
- how many corrections this session contributed to the ledger,
|
|
142
|
+
- whether any topic crossed the threshold,
|
|
143
|
+
- the path of any draft skill written,
|
|
144
|
+
- the path of the ledger.
|
|
145
|
+
|
|
146
|
+
### 7. Persist the session marker
|
|
147
|
+
|
|
148
|
+
Before exiting, write the current Copilot CLI session UUID to `.oh-my-copilot/self-evolve/.last-run-session` (overwrite, no newline needed). Use the same shell line as Step 0 to determine it. Subsequent invocations within the same session will short-circuit via Check B in Step 0.
|
|
149
|
+
|
|
150
|
+
If `~/.copilot/session-state/` was empty or unreadable in Step 0, write the literal string `unknown-session` so the marker exists but cannot accidentally match a real UUID later.
|
|
151
|
+
|
|
152
|
+
## Output discipline
|
|
153
|
+
|
|
154
|
+
- One ledger line per correction. Never batch into a paragraph.
|
|
155
|
+
- One draft skill per recurring topic. Never combine unrelated topics.
|
|
156
|
+
- Drafts always carry `status: draft`. A human promotes them by moving the draft directory from `.oh-my-copilot/self-evolve/drafts/<slug>/` into `.github/skills/learned-<slug>/` (and optionally deleting the `status: draft` line). Until that move, the draft is inert — Copilot CLI does not load it.
|
|
157
|
+
- If unsure whether something is a correction, skip it. False negatives are cheap; false positives pollute the loop.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd
|
|
3
|
+
description: Red-green-refactor loop for behavior changes where tests are practical. Use with /tdd when a change can be specified by tests.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TDD
|
|
7
|
+
|
|
8
|
+
Use `/tdd` when a change can be specified by tests.
|
|
9
|
+
|
|
10
|
+
Loop:
|
|
11
|
+
1. Write or identify a failing behavior test.
|
|
12
|
+
2. Make it pass with minimal code.
|
|
13
|
+
3. Refactor safely.
|
|
14
|
+
4. Run related checks.
|
|
15
|
+
|
|
16
|
+
Rules:
|
|
17
|
+
- Test behavior through public surfaces.
|
|
18
|
+
- Avoid brittle implementation tests.
|
|
19
|
+
- If TDD is impractical, explain why and use `/verify`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team
|
|
3
|
+
description: Split an approved plan into parallel lanes for agents or humans. Use with /team when work has independent lanes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Team
|
|
7
|
+
|
|
8
|
+
Use `/team` when work has independent lanes.
|
|
9
|
+
|
|
10
|
+
Do:
|
|
11
|
+
- Require a plan or clear task.
|
|
12
|
+
- Split into lanes with owners, files, and tests.
|
|
13
|
+
- Identify dependencies and conflict risks.
|
|
14
|
+
- Keep it as a coordination brief, not a runtime.
|
|
15
|
+
|
|
16
|
+
Output:
|
|
17
|
+
- `Lanes`
|
|
18
|
+
- `Shared files`
|
|
19
|
+
- `Order/dependencies`
|
|
20
|
+
- `Verification`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ultraqa
|
|
3
|
+
description: Adversarial QA pass that tests behavior, failures, and regressions. Use with /ultraqa after implementation when shallow checks are not enough.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UltraQA
|
|
7
|
+
|
|
8
|
+
Use `/ultraqa` after implementation when shallow checks are not enough.
|
|
9
|
+
|
|
10
|
+
Do:
|
|
11
|
+
- Test happy paths, hostile cases, and fallbacks.
|
|
12
|
+
- Prefer runnable checks over inspection.
|
|
13
|
+
- Record exact failures.
|
|
14
|
+
- Route fixes back to `/ralph` or `/ultrawork`.
|
|
15
|
+
|
|
16
|
+
Output:
|
|
17
|
+
- `Scenarios`
|
|
18
|
+
- `Results`
|
|
19
|
+
- `Regressions`
|
|
20
|
+
- `Fix recommendations`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ultrawork
|
|
3
|
+
description: High-throughput execution for many independent small tasks. Use with /ultrawork when work can be batched safely.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ultrawork
|
|
7
|
+
|
|
8
|
+
Use `/ultrawork` when there are many independent, low-conflict work items.
|
|
9
|
+
|
|
10
|
+
Do:
|
|
11
|
+
- Batch independent tasks.
|
|
12
|
+
- Avoid shared-file collisions.
|
|
13
|
+
- Verify each batch.
|
|
14
|
+
- Escalate ambiguous or risky branches to `/ralplan`.
|
|
15
|
+
|
|
16
|
+
Output:
|
|
17
|
+
- `Batch`
|
|
18
|
+
- `Completed`
|
|
19
|
+
- `Failed/blockers`
|
|
20
|
+
- `Verification`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verify
|
|
3
|
+
description: Prove completion claims with fresh evidence. Use with /verify before saying done.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Verify
|
|
7
|
+
|
|
8
|
+
Use `/verify` before saying done.
|
|
9
|
+
|
|
10
|
+
Do:
|
|
11
|
+
- State the claim.
|
|
12
|
+
- Run or inspect the smallest checks that prove it.
|
|
13
|
+
- Read outputs.
|
|
14
|
+
- Report gaps honestly.
|
|
15
|
+
|
|
16
|
+
Output:
|
|
17
|
+
- `PASS/FAIL`
|
|
18
|
+
- `Evidence`
|
|
19
|
+
- `Known gaps`
|
|
20
|
+
- `Stop condition`
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Damian Borek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# oh-my-copilot
|
|
2
|
+
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
|
|
5
|
+
**Multi-agent orchestration for GitHub Copilot CLI. Zero learning curve.**
|
|
6
|
+
|
|
7
|
+
_Don't relearn Copilot. Just use omp._
|
|
8
|
+
|
|
9
|
+
[Quick Start](#quick-start) • [Features](#features) • [In-session shortcuts](#in-session-shortcuts) • [Roadmap](#roadmap) • [Documentation](#documentation)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
**Step 1: Install**
|
|
16
|
+
|
|
17
|
+
Two commands install all 17 omp skills as a Copilot CLI plugin:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
copilot plugin marketplace add damian87x/oh-my-copilot
|
|
21
|
+
copilot plugin install oh-my-copilot@oh-my-copilot
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Requires Copilot CLI v1.0.48+. After install, `/omp-autopilot`, `/ralplan`, `/code-review`, `/create-skill`, `/self-evolve`, and the rest are available inside any Copilot session.
|
|
25
|
+
|
|
26
|
+
If you prefer the npm path for the local runtime:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm i -g @damian87/omp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Step 2: Build something**
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Bare-flag launch with permissions bypass (alias of copilot --yolo)
|
|
36
|
+
omp --madmax -p "build a REST API for managing tasks"
|
|
37
|
+
|
|
38
|
+
# Or via in-session skill
|
|
39
|
+
/omp-autopilot "build a REST API for managing tasks"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
That's it.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Why oh-my-copilot?
|
|
47
|
+
|
|
48
|
+
- **Zero configuration** — works out of the box with sane defaults
|
|
49
|
+
- **Team-first orchestration** — staged pipelines on a shared task list
|
|
50
|
+
- **Bare-flag bypass** — `omp --madmax` injects `--yolo` so non-interactive runs never block on a permission prompt
|
|
51
|
+
- **Persistent execution** — Ralph, UltraQA, and Ultrawork keep going until the goal is verified
|
|
52
|
+
- **MCP-powered shared state** — workers swap typed messages over an outbox/inbox cursor instead of summarising each other's summaries
|
|
53
|
+
- **Lifecycle hooks** — `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `SessionEnd`, `Error`
|
|
54
|
+
- **Doctor included** — `omp doctor` verifies plugin manifest, skills discovery, hooks, and the underlying `copilot` CLI in one shot
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Features
|
|
59
|
+
|
|
60
|
+
### Orchestration Modes
|
|
61
|
+
|
|
62
|
+
| Mode | What it is | Best for |
|
|
63
|
+
| -------------------- | ---------------------------------------------------------------- | ---------------------------------------------- |
|
|
64
|
+
| **Team** | tmux CLI workers on a shared task list with file-state outbox | Coordinated parallel work on one objective |
|
|
65
|
+
| **Autopilot** | Single-lead autonomous loop (`/omp-autopilot`) | End-to-end feature work with minimal ceremony |
|
|
66
|
+
| **Ralph** | Persistent verify/fix loop with explicit reviewer | Tasks that must complete fully (no partials) |
|
|
67
|
+
| **Ultrawork** | Maximum parallelism for fan-out tasks | Burst parallel fixes / refactors |
|
|
68
|
+
| **UltraQA** | QA cycling until tests/build/lint/typecheck all pass | Quality gates needing repeat diagnose/fix |
|
|
69
|
+
| **Ralplan** | Consensus planning step before any loop | Vague requests that need decomposition first |
|
|
70
|
+
| **Madmax (CLI)** | `omp --madmax …` — bypass permissions for non-interactive runs | Scripted / automated copilot invocations |
|
|
71
|
+
|
|
72
|
+
### Intelligent Orchestration
|
|
73
|
+
|
|
74
|
+
- **7 specialized agents** — planner, architect, executor, verifier, code-reviewer, designer, researcher (all `--agent <name>` compatible with Copilot CLI)
|
|
75
|
+
- **17 in-session skills** auto-discovered from `.github/skills/`
|
|
76
|
+
- **Smart pipeline routing** — `/codebase-research` → `/ralplan` → `/team` / `/ralph` / `/ultrawork` → `/code-review` → `/ultraqa`
|
|
77
|
+
|
|
78
|
+
### Developer Experience
|
|
79
|
+
|
|
80
|
+
- **MCP server** ships with `notepad`, `project-memory`, `shared-memory`, `state`, and `trace` tools out of the box
|
|
81
|
+
- **File-state coordination** — outbox JSONL + byte cursor, atomic `O_EXCL` task locks, optimistic CAS on claim
|
|
82
|
+
- **Idle nudge** — content-based pane idle detection that pokes stuck workers
|
|
83
|
+
- **Mode-state loops** — single source of truth per loop (Ralph/Ultrawork/UltraQA state files)
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## In-session shortcuts
|
|
88
|
+
|
|
89
|
+
These run **inside a Copilot CLI session** after the plugin is installed.
|
|
90
|
+
|
|
91
|
+
| In-session form | Effect | Example |
|
|
92
|
+
| ----------------------- | --------------------------------------------------------- | ---------------------------------------------------- |
|
|
93
|
+
| `/omp-autopilot` | Full autonomous execution | `/omp-autopilot "build a todo app"` |
|
|
94
|
+
| `/ralph` | Persistence mode | `/ralph "refactor auth"` |
|
|
95
|
+
| `/ultrawork` | Maximum parallelism | `/ultrawork "fix all type errors"` |
|
|
96
|
+
| `/ultraqa` | QA cycling until goal met | `/ultraqa "build green, tests pass"` |
|
|
97
|
+
| `/ralplan` | Consensus planning | `/ralplan "plan this feature"` |
|
|
98
|
+
| `/team` | Coordinated multi-agent task list | `/team 3:executor "ship the migration"` |
|
|
99
|
+
| `/code-review` | Diff-focused reviewer | `/code-review` |
|
|
100
|
+
| `/codebase-research` | Map an area of the codebase | `/codebase-research "auth middleware"` |
|
|
101
|
+
| `/debug` | Disciplined diagnose-reproduce-fix loop | `/debug "flaky integration test"` |
|
|
102
|
+
| `/tdd` | Red-green-refactor cycle | `/tdd "add pagination to /users"` |
|
|
103
|
+
| `/verify` | Exercise a change end-to-end | `/verify` |
|
|
104
|
+
| `/create-skill` | Author a new skill | `/create-skill` |
|
|
105
|
+
| `/self-evolve` | Extract a learned skill from this session | `/self-evolve` |
|
|
106
|
+
| `/jira-ticket` | Render or apply a Jira ticket payload | `/jira-ticket` |
|
|
107
|
+
| `/prototype` | Throwaway prototype to flesh out a design | `/prototype "state shape"` |
|
|
108
|
+
| `/grill-me` | Stress-test a plan with Socratic questions | `/grill-me` |
|
|
109
|
+
| `/caveman` | Ultra-compressed communication mode | `/caveman` |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Terminal CLI
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
omp --help
|
|
117
|
+
omp version
|
|
118
|
+
omp doctor # verify install + copilot binary
|
|
119
|
+
omp list # show discovered skills and agents
|
|
120
|
+
omp setup [--dry-run] [--scope project|user]
|
|
121
|
+
omp launch -- [copilot flags…] # forward arbitrary args to copilot
|
|
122
|
+
omp --madmax -p "edit src/foo.ts" # bare-flag, maps to copilot --yolo
|
|
123
|
+
omp team 3:executor "fix all type errors" # spawn tmux workers
|
|
124
|
+
omp team status <name>
|
|
125
|
+
omp team shutdown <name>
|
|
126
|
+
omp ralph start "<task>" [--max-iterations N]
|
|
127
|
+
omp ultrawork start "<objective>" [--task-count N]
|
|
128
|
+
omp ultraqa start "<goal>" [--max-cycles N]
|
|
129
|
+
omp mcp # MCP server over stdio
|
|
130
|
+
omp catalog list | validate | capability <id>
|
|
131
|
+
omp jira render <plan-file>
|
|
132
|
+
omp jira apply <key-or-plan> --comment|--update|--transition|--link
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Environment overrides:
|
|
136
|
+
|
|
137
|
+
- `OMP_PLUGIN_ROOT` — path to the plugin checkout (with `OMC_PLUGIN_ROOT` accepted for back-compat)
|
|
138
|
+
- `OMP_COPILOT_BIN` — alternate `copilot` binary
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Roadmap
|
|
143
|
+
|
|
144
|
+
omp is intentionally small today and growing in vertical slices.
|
|
145
|
+
|
|
146
|
+
### v0.2 — Notification gateways
|
|
147
|
+
|
|
148
|
+
Telegram, Discord, Slack, and generic webhook integration so long-running modes can ping you when they finish, fail, or stall. Tag with `--telegram` / `--discord` / `--slack` per invocation; configure once with `omp notify add`.
|
|
149
|
+
|
|
150
|
+
### v0.3 — Checkpoints + rollback
|
|
151
|
+
|
|
152
|
+
Auto-snapshot the working tree before any tool-driven file edit. `omp rollback [id]` to revert a checkpoint. A safety net for autonomous loops that go wide before they go right.
|
|
153
|
+
|
|
154
|
+
### v0.4 — Provider advisor (`omp ask`)
|
|
155
|
+
|
|
156
|
+
One command to consult an alternate provider CLI (`claude`, `codex`, `gemini`) and save the response as a markdown artifact under `.omp/artifacts/ask/`. Same surface in-session via `/ask`.
|
|
157
|
+
|
|
158
|
+
### v0.5 — Scheduled tasks
|
|
159
|
+
|
|
160
|
+
Natural-language cron: `omp schedule "every weekday 9am run /code-review on main"`. Jobs can attach skills, deliver results to a notification gateway, and support pause/resume/edit. Built on the same mode-state primitives Ralph and UltraQA use.
|
|
161
|
+
|
|
162
|
+
### v0.6 — Browser tool (MCP)
|
|
163
|
+
|
|
164
|
+
A first-class browser MCP tool: web search, page extraction, full automation (navigate, click, type, screenshot). For research skills that need fresh data instead of training-cutoff guesses.
|
|
165
|
+
|
|
166
|
+
### v0.7 — HUD-lite statusline
|
|
167
|
+
|
|
168
|
+
Live orchestration metrics in the terminal: active mode, current task, worker count, tokens, cache hit rate, last error.
|
|
169
|
+
|
|
170
|
+
### v0.8 — Provider routing
|
|
171
|
+
|
|
172
|
+
Fine-grained per-task provider selection — sorting, whitelists, priority ordering, cost-aware fallback. For mixed pipelines that want Opus for planning and Haiku for grunt work without manual model switching.
|
|
173
|
+
|
|
174
|
+
### v0.9 — Skill learning
|
|
175
|
+
|
|
176
|
+
Extract repeating patterns from session transcripts into reusable skill files with strict quality gates. Auto-injects into context when relevant triggers fire.
|
|
177
|
+
|
|
178
|
+
### v1.0 — Pre-built agent templates
|
|
179
|
+
|
|
180
|
+
One-shot deployable templates for common workflows: research, security audit, design-system migration, content automation. `omp template add <name>` drops a curated skill + agent pair into your project.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Documentation
|
|
185
|
+
|
|
186
|
+
- [General skills](docs/general-skills.md) — slash-skill layout, capability IDs, portability rules
|
|
187
|
+
- [Copilot distribution](docs/copilot-distribution.md) — project/user skill installs and the case against GitHub App Extensions
|
|
188
|
+
- [Jira adapter](docs/jira.md) — configuration discovery, safe operations, dry-runs, fallback payloads
|
|
189
|
+
- [Self-evolve](docs/self-evolve.md) — extracting reusable skills from session transcripts
|
|
190
|
+
|
|
191
|
+
## Layout
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
.github/agents/<name>.md # custom agents discoverable via --agent
|
|
195
|
+
.github/skills/<name>/SKILL.md # in-session slash skills
|
|
196
|
+
hooks/hooks.json # lifecycle hook manifest
|
|
197
|
+
scripts/*.mjs # hook implementations
|
|
198
|
+
src/ # omp CLI, MCP server, team runtime, mode-state loops
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Skills follow the [Copilot agent-skills docs](https://docs.github.com/en/copilot) — project skills live in `.github/skills/` and are invoked with `/skill-name`.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Local development
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
npm install
|
|
209
|
+
npm run build
|
|
210
|
+
npm test # 137 tests
|
|
211
|
+
npm run lint:skills
|
|
212
|
+
npm run sync:dry-run
|
|
213
|
+
npx tsx src/cli.ts skill install .github/skills/create-skill --dry-run
|
|
214
|
+
```
|