CCPM Project Management
automazeio/ccpm
Runs a spec-driven workflow from PRD to epic to GitHub issues to parallel agents, with status, standup and blocked-work reports from bundled scripts.
Publish Seed specification as GitHub Issues for team-based project management
$ npx skills add Q00/ouroboros --skill publish -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Q00/ouroboros publish --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/publish .claude/skills/publish && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "publish" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/publish into .claude/skills/publish/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Q00/ouroboros/tree/main/skills/publishType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Q00/ouroboros --skill publish -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Q00/ouroboros publish --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/publish .agents/skills/publish && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "publish" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/publish into .agents/skills/publish/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Q00/ouroboros --skill publish -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Q00/ouroboros publish --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/publish .cursor/skills/publish && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "publish" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/publish into .cursor/skills/publish/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Q00/ouroboros.git --path skills/publish--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Q00/ouroboros --skill publish -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Q00/ouroboros publish --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/publish .gemini/skills/publish && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "publish" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/publish into .gemini/skills/publish/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Q00/ouroboros publishInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Q00/ouroboros --skill publish -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/publish .github/skills/publish && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "publish" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/publish into .github/skills/publish/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Q00/ouroboros --skill publish -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Q00/ouroboros publish --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/publish .opencode/skills/publish && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "publish" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/publish into .opencode/skills/publish/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "publish", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
publishPublish Seed specification as GitHub Issues for team-based project management
Publish is an agent skill from Q00/ouroboros. Publish Seed specification as GitHub Issues for team-based project management
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Product & Project Management, covering Project management. It works with GitHub. The repository describes itself as: Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI… The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f587795. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comcli.github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Publish loads about 2.7k tokens when it runs. Until then it costs about 21 tokens; SKILL.md has 790 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Q00/ouroboros at commit f587795, republished under its MIT licence (© Q00). 790 words, ~2,677 tokens.
.claude/skills/publish/SKILL.md (or your agent's skills folder).Convert a Seed specification into structured GitHub Issues for team workflows.
ooo publish [seed_path]
/ouroboros:publish [seed_path]Trigger keywords: "publish to github", "create issues from seed", "seed to issues"
When the user invokes this skill:
1a. Verify gh CLI is installed:
command -v gh >/dev/null 2>&1 && echo "OK" || echo "MISSING"If missing, tell the user:
GitHub CLI (gh) is not installed.
Install it: https://cli.github.com/Stop.
1b. Verify gh is authenticated:
gh auth statusIf not authenticated, tell the user:
GitHub CLI is not authenticated. Run: gh auth loginStop.
Ouroboros stores seeds in ~/.ouroboros/seeds/:
~/.ouroboros/seeds/{seed_id}.yaml (YAML)~/.ouroboros/seeds/pm_seed_{id}.json (JSON)Determine the Seed source in this priority order:
.yaml or .json), read it directlyls -t ~/.ouroboros/seeds/*.yaml ~/.ouroboros/seeds/*.json 2>/dev/null | head -5ooo seed or ooo pm was just run in this conversation and the seed path was reported, use that path.If no seed is found:
No Seed found. Run `ooo seed` or `ooo pm` first to generate a specification.Stop.
Detect the file format by extension and parse accordingly:
For YAML seeds (from ooo interview + ooo seed):
Read the YAML file and extract:
goal → Epic title and descriptionconstraints → Listed in Epic bodyacceptance_criteria → Checklist items in Epic + distributed to Task issuesontology_schema → Documentation section in Epicevaluation_principles → Quality criteria referenceexit_conditions → Definition of Donemetadata.ambiguity_score → Confidence indicatormetadata.seed_id → Used for duplicate detectionFor JSON seeds (from ooo pm):
Read the JSON file and extract fields using the actual PMSeed schema:
| PMSeed field | Maps to |
|---|---|
pm_id | Seed identifier (for duplicate detection) |
product_name | Epic title prefix |
goal | Epic Goal section |
constraints | Epic Constraints section (array of strings) |
success_criteria | Acceptance Criteria checklist (array of strings) |
user_stories | User Stories section (array of {persona, action, benefit}) |
deferred_items | Deferred Items section (array of strings) |
decide_later_items | Open Questions section (array of strings) |
assumptions | Assumptions section (array of strings) |
Format user stories as: "As a {persona}, I want to {action}, so that {benefit}."
If any field is missing or empty, omit that section from the Epic body rather than failing.
4a. Attempt auto-detection from current directory:
gh repo view --json nameWithOwner -q '.nameWithOwner' 2>/dev/null4b. Present the target repo choice via AskUserQuestion:
If auto-detection succeeded:
{
"questions": [{
"question": "Publish Seed as GitHub Issues to this repository?",
"header": "Target Repository",
"options": [
{"label": "<detected_repo>", "description": "Use current repository"},
{"label": "Other", "description": "I'll specify a different owner/repo"}
],
"multiSelect": false
}]
}If auto-detection failed (not in a git repo):
{
"questions": [{
"question": "Which GitHub repository should the issues be created in? (format: owner/repo)",
"header": "Target Repository"
}]
}If the user chose "Other", ask:
{
"questions": [{
"question": "Enter the target repository (format: owner/repo):",
"header": "Target Repository"
}]
}Store the resolved repository as TARGET_REPO. All subsequent gh commands MUST include -R <TARGET_REPO> to ensure they target the correct repository.
Before creating issues, check if this seed was already published:
gh issue list -R <TARGET_REPO> --label "ouroboros" --state all --search "<seed_id or pm_id>" --limit 5 --json number,title,stateThe search uses the seed's unique identifier (metadata.seed_id for YAML seeds, pm_id for JSON seeds). This works because Step 7 persists the identifier in the Epic body (see the Seed ID field in the Epic template).
If matching issues are found, warn the user via AskUserQuestion:
{
"questions": [{
"question": "Found existing Ouroboros issues that may be from the same seed:\n\n<list of matching issues>\n\nCreate new issues anyway?",
"header": "Duplicate Warning",
"options": [
{"label": "Create anyway", "description": "Proceed with new issues"},
{"label": "Cancel", "description": "Do not create duplicate issues"}
],
"multiSelect": false
}]
}If "Cancel": Stop.
Before creating issues, present the planned structure to the user for review.
6a. Break down acceptance criteria into Task groups:
Analyze the acceptance criteria and group them into logical implementation units. Each unit becomes a Task issue. Use your understanding of the domain to create meaningful groupings (e.g., group by feature area, layer, or dependency order).
6b. Present the plan via AskUserQuestion:
{
"questions": [{
"question": "Here's the planned issue structure:\n\n**Epic**: <goal summary>\n\n**Tasks**:\n1. <task_1_title> — <brief scope>\n2. <task_2_title> — <brief scope>\n3. <task_3_title> — <brief scope>\n\nProceed with creating these issues?",
"header": "Issue Plan",
"options": [
{"label": "Create issues", "description": "Publish to GitHub now"},
{"label": "Modify plan", "description": "I want to adjust the structure first"}
],
"multiSelect": false
}]
}If "Modify plan": Ask what to change, adjust, and re-present.
IMPORTANT: Every gh command in this step MUST include -R <TARGET_REPO>.
Issue number extraction: gh issue create outputs a URL like https://github.com/owner/repo/issues/42. Extract the issue number by parsing the trailing digits:
EPIC_URL=$(gh issue create -R <TARGET_REPO> --title "..." --label "..." --body "...")
EPIC_NUM=$(echo "$EPIC_URL" | grep -o '[0-9]*$')Apply the same extraction pattern for every Task issue created.
7a. Create labels (if they don't exist):
gh label create "ouroboros" -R <TARGET_REPO> --description "Created by Ouroboros publish" --color "6f42c1" 2>/dev/null || true
gh label create "epic" -R <TARGET_REPO> --description "Epic / parent issue" --color "0075ca" 2>/dev/null || true
gh label create "task" -R <TARGET_REPO> --description "Implementation task" --color "008672" 2>/dev/null || true7b. Create the Epic issue:
gh issue create -R <TARGET_REPO> \
--title "[Epic] <goal_summary>" \
--label "ouroboros,epic" \
--body "$(cat <<'BODY'
## Goal
<goal from seed>
## Constraints
<constraints as bullet list>
## Acceptance Criteria
- [ ] <criterion_1>
- [ ] <criterion_2>
- ...
## Ontology
| Field | Type | Description |
|-------|------|-------------|
| <field_name> | <type> | <description> |
## Evaluation Principles
| Principle | Weight | Description |
|-----------|--------|-------------|
| <name> | <weight> | <description> |
## Exit Conditions
<exit conditions as bullet list>
---
**Seed ID**: `<seed_id or pm_id>` | **Ambiguity Score**: <score> | **Seed**: `<seed_file_path>`
*Generated by [Ouroboros](https://github.com/Q00/ouroboros) via `ooo publish`*
BODY
)"Capture the Epic issue number from the output.
7c. Create Task issues (one per implementation unit):
For each task:
gh issue create -R <TARGET_REPO> \
--title "[Task] <task_title>" \
--label "ouroboros,task" \
--body "$(cat <<'BODY'
Parent: #<epic_number>
## Scope
<what this task covers>
## Acceptance Criteria
- [ ] <specific_criterion_1>
- [ ] <specific_criterion_2>
## Test Checklist
- [ ] <test_1>
- [ ] <test_2>
- [ ] <test_3>
## Pass Criteria
<measurable conditions for this task to be considered done>
---
*Part of [Epic] #<epic_number> | Generated by [Ouroboros](https://github.com/Q00/ouroboros) via `ooo publish`*
BODY
)"7d. Update Epic with task links:
After all tasks are created, add a comment to the Epic:
gh issue comment <epic_number> -R <TARGET_REPO> --body "$(cat <<'BODY'
## Implementation Tasks
- [ ] #<task_1_number> — <task_1_title>
- [ ] #<task_2_number> — <task_2_title>
- [ ] #<task_3_number> — <task_3_title>
Track overall progress by checking off tasks as their issues are closed.
BODY
)"Present the results:
Published to <TARGET_REPO>:
#<epic> [Epic] <goal_summary>
├── #<task_1> [Task] <task_1_title>
├── #<task_2> [Task] <task_2_title>
└── #<task_3> [Task] <task_3_title>
View: https://github.com/<TARGET_REPO>/issues/<epic>Then suggest next steps:
Next steps:
- Assign tasks to team members on GitHub
- Use GitHub Projects board for tracking
- Run `ooo run` for AI-assisted implementation of individual tasksgh CLIgh commands use -R <TARGET_REPO>, so seeds can be published to any repository the user has write access toooo seed and JSON seeds from ooo pm are both supported — the parser auto-detects format by file extensionYour final response MUST end with exactly one breadcrumb footer line:
◆ <current state> → next: <recommended action>Derive <current state> from live session state via ouroboros_session_status when that MCP projection is available; otherwise derive it from this skill's actual outcome. Never use a linear Step N of M footer because Ouroboros is an evolutionary loop. When the next action is genuinely a choice, list 2-3 honest options in the next: clause. The breadcrumb line must be the last line of the response.
© Q00, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/publish of Q00/ouroboros.
Open the folder on GitHubat commit f587795
Publish next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Publish this skillQ00/ouroboros | 6.2k | — | ~2.7k | Automated safety check: Pass | MIT | |
| CCPM Project Managementautomazeio/ccpm | 8.4k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Project Managerpwrdrvr/openclaw-codex-app-server | 265 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Find Project Anomaliespenpot/penpot | 61k | — | ~1.2k | Automated safety check: Pass | MPL-2.0 | |
| Gh Read Inspectoreclipse-rdf4j/rdf4j | 420 | — | ~950 | Automated safety check: Pass | BSD-3-Clause | |
| GitHub Project Management Swarmruvnet/agentic-flow | 819 | 6 repos | ~7.1k | Automated safety check: Pass | None |
automazeio/ccpm
Runs a spec-driven workflow from PRD to epic to GitHub issues to parallel agents, with status, standup and blocked-work reports from bundled scripts.
pwrdrvr/openclaw-codex-app-server
Manage GitHub issues and the GitHub Project board for the current repository, while keeping the local tracker in sync.
penpot/penpot
Check a GitHub milestone against the Main project board, report the five anomaly types to tmp/<MILESTONE-ANOMALIES.md, and fix missing milestone assignments on request.
eclipse-rdf4j/rdf4j
Retrieve GitHub issues, pull requests, and milestones with read-only, whitelisted gh commands only.
ruvnet/agentic-flow
Manages GitHub issues and project boards with swarm coordination: issue creation and triage, issue-to-task conversion, progress tracking and stale issue cleanup.
yontrack/yontrack
Mark every status:ready issue of a GitHub milestone as released — swap status:ready for status:released, comment "Available in <version", and close any that are still open (ready issues are normally…
Q00/ouroboros
Triages and works through GitHub issues and pull requests in the Q00/ouroboros repo as a maintainer, within a stated review boundary and clear limits on what it may change.
Q00/ouroboros
Runs a guided product-manager interview that classifies each question automatically and produces a Product Requirements Document.
Q00/ouroboros
Scans a directory for existing git repositories and worktrees, then registers and manages which ones serve as default context during interviews.
Q00/ouroboros
Scores an agent's finished work with a three-stage pipeline: free mechanical checks, an advisory semantic review, and an optional multi-model consensus vote.
Q00/ouroboros
Starts, monitors or rewinds an evolutionary development loop that refines an ontology and acceptance criteria generation by generation until it converges, using the Ouroboros MCP tools.
Q00/ouroboros
Opens or drives the Ouroboros settings GUI, picking a browser, TUI or chat-based approach depending on whether the user can reach a browser window.
Works with
Categories
Publish Seed specification as GitHub Issues for team-based project management. Publish is an agent skill from Q00/ouroboros.
Publish fits situations like: tasks that involve Project management.
Run `npx skills add Q00/ouroboros --skill publish -a claude-code`. Or copy the skill folder (skills/publish in Q00/ouroboros) into .claude/skills/publish in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Q00/ouroboros --skill publish -a codex`. Or copy the skill folder (skills/publish in Q00/ouroboros) into .agents/skills/publish in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Q00/ouroboros --skill publish -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish, .gemini/skills/publish, .github/skills/publish and .opencode/skills/publish in your project.
Going by SKILL.md and its folder, Publish needs the command-line tools its instructions call (gh).
SKILL.md names 2 domains. In commands or code: github.com and cli.github.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Publish is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Publish: CCPM Project Management (automazeio/ccpm, 8.4k stars), Project Manager (pwrdrvr/openclaw-codex-app-server, 265 stars), Find Project Anomalies (penpot/penpot, 61k stars) and Gh Read Inspector (eclipse-rdf4j/rdf4j, 420 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Q00 (a GitHub user) maintains it in Q00/ouroboros, which has 6,194 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 7, 2026.
Source: Q00/ouroboros on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.