Skip to content
Back to skills

Project Manager

ASecurity

Use when creating, updating, or triaging GitHub issues. Writes issues from a product perspective — user stories, acceptance criteria, context, and dependencies — without prescribing implementation.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsgoshellbashgitapi

Works with

  • api

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add ivy/dotfiles --skill project-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project Manager?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Project Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ivy-project-manager/badge)](https://www.skillsdirectory.com/skills/ivy-project-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: project-manager
description: Use when creating, updating, or triaging GitHub issues. Writes issues from a product perspective — user stories, acceptance criteria, context, and dependencies — without prescribing implementation.
argument-hint: "[create | update #NNN | triage] [description or context]"
allowed-tools:
  - Read
  - Glob
  - Grep
  - Bash(gh issue view:*)
  - Bash(gh issue list:*)
  - Bash(gh milestone list:*)
  - Bash(gh label list:*)
---

# Project Manager

**Autonomy:** model-invocable · acts autonomously — an issue create or edit is externally visible but reversible · has no close, delete, or merge capability

Write GitHub issues like a product manager. Focus on the user story, acceptance criteria, and context. Leave implementation notes when useful but never prescribe the solution.

## Arguments

```
$ARGUMENTS
```

## Instructions

### 1. Determine the Action

Parse arguments for intent:

- **`create`** or a description with no issue number → create a new issue
- **`update #NNN`** or **`#NNN`** with modification context → update an existing issue
- **`triage`** → review recent issues for gaps, duplicates, or missing context
- **Ambiguous** → infer from conversation context; ask only if genuinely unclear

### 2. Learn the Repo's Voice

Before writing, fetch 3–5 recent issues from the same milestone (or repo if no milestone):

```bash
gh issue list --milestone "..." --json number,title,body --limit 5
```

Adapt to the conventions you observe:
- **User story format** ("As an X, I can Y") vs. problem/solution format
- **Section headings** (Use-case, Context, Acceptance criteria, Depends on, Future scope, etc.)
- **Tone** (terse vs. explanatory)
- **Labeling and milestone conventions**

If the repo has no issues yet, use a sensible default: user story + acceptance criteria + context.

### 3. Draft the Issue

**Think like a PM, not an engineer:**

- **Title:** Conventional commit prefix if the repo uses them. Concise — under 70 chars.
- **User story or problem statement:** Who benefits and what they can do. One sentence.
- **Use-case:** Numbered walkthrough of the happy path. 3–5 steps max.
- **Context:** Why this matters now. What's the alternative without it. What it builds on.
- **Acceptance criteria:** Observable behaviors, not implementation steps. Testable.
- **Future scope:** Things explicitly NOT in this issue. Reduces scope creep.
- **Depends on:** Link upstream issues. Use `#NNN` format.
- **Notes:** Non-obvious constraints, gotchas, or pointers for whoever picks it up. Not a design doc.

**What to leave out:**
- File paths, function names, or code snippets (that's implementation)
- "How to build it" sections (let the implementer decide)
- Over-specified acceptance criteria that constrain the solution

### 4. Assign Metadata

- **Milestone:** Match the milestone of related issues. With several candidates, pick the closest and say which evidence decided it; with none, leave it unset and say so
- **Labels:** Match existing label conventions; don't invent new ones

### 5. Publish

Write the body to a temp file to avoid shell escaping issues:

```bash
cat > /tmp/issue-body.md << 'ISSUE'
...formatted body...
ISSUE
```

**Create:**
```bash
gh issue create --title "..." --body-file /tmp/issue-body.md --milestone "..."
```

**Update:**
```bash
gh issue edit NNN --body-file /tmp/issue-body.md
```

Report the issue URL when done.

### Triage Mode

When `triage` is specified:

1. Fetch open issues for the active milestone
2. Flag: missing acceptance criteria, vague scope, no dependencies listed, duplicates
3. Apply the edits that close a concrete gap, and report each one with the reason. For a duplicate, name which issue survives and why. Where the gap is a fact only the user holds, say which issue and which fact

## Examples

```
/project-manager create auto-generate PR body from agent session context
/project-manager #64 add a note about graceful fallback
/project-manager create --all flag for multi-repo PR creation, depends on #64 and #65
/project-manager triage milestone "1. Crew Ships Code"
/project-manager                          → infer from conversation context
```

## Anti-patterns

- Writing implementation plans disguised as issues
- Listing file paths or function signatures in acceptance criteria
- Creating issues with no user story or problem statement
- Skipping the format-learning step and using a generic template
- Over-specifying: "use a map[string]bool" is implementation, not acceptance criteria

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…