원클릭으로
sync
Push local tasks and tickets to GitHub Issues, Jira Cloud, or Asana
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Push local tasks and tickets to GitHub Issues, Jira Cloud, or Asana
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Co-create a customer interview guide using Mom Test principles
Transform a feature idea or stakeholder request into an outcome brief using a 4-stage framework: behavior hypothesis, risk identification, cheap experiment design, and metric definition. Use this skill when the user shares a feature idea, a stakeholder request, a PRD, a spec, or any document describing something to build and wants to pressure-test it before committing engineering capacity. Trigger on phrases like "outcome brief", "analyze this feature", "is this worth building", "test this idea", "brief this", "run the 4 questions", or when the user pastes a feature description and asks for critical analysis. Requires an input: a feature idea, document, or stakeholder request to analyze.
Convert a spec into a task breakdown (local, for review before syncing)
Produce a strategic intelligence report covering industry trends, competitive benchmarks, and opportunity mapping. Use when the PM wants market research, competitive analysis, or strategic landscape overview. Trigger on phrases like "research", "competitive analysis", "market landscape", "industry trends", or when the user wants to understand the competitive environment before building.
Conduct a structured PM interview to gather requirements, then write a complete spec document ready for development. Use this skill whenever a PM wants to spec out a feature, write up product requirements, plan what needs to be built, or turn a rough idea into a formal spec. Trigger on phrases like "spec out", "write a spec", "document requirements", "plan this feature", or when a PM describes something they want to build.
Create a standalone ticket (bug, improvement, or request)
| name | sync |
| description | Push local tasks and tickets to GitHub Issues, Jira Cloud, or Asana |
| argument-hint | <project> <feature-name|ticket-name|--all> |
| model | sonnet |
| allowed-tools | Read, Write, Bash, AskUserQuestion, mcp__atlassian__jira_search, mcp__atlassian__jira_create_issue, mcp__atlassian__jira_create_issue_link, mcp__atlassian__jira_get_project_versions, mcp__atlassian__jira_create_version |
Arguments: $ARGUMENTS Expected format:
/pm:sync <project> <feature-name>: sync one feature's tasks/pm:sync <project> <ticket-name>: sync one standalone ticket/pm:sync <project> --all: sync everything not yet syncedParse $ARGUMENTS to extract project and target. If either is missing:
"Usage: /pm:sync <feature-name|ticket-name|--all>"
Read <project>/pm-config.md (required). If pm-config.md is not found, stop:
"No pm-config.md found for . Create one first."
Extract provider from pm-config frontmatter. If the field is missing or blank, default to github.
Load provider rules. Check for a project override first:
.claude/overrides/rules/providers/<provider>.md exists, Read and follow it.~/.claude/pm/rules/providers/<provider>.md.If provider is github:
github_repo from pm-config. Split on / to get owner and repo..claude/overrides/rules/github-labels.md exists, Read it; otherwise Read ~/.claude/pm/rules/github-labels.md.If provider is jira:
jira.host, jira.project_key, and jira.issue_type from pm-config.If provider is asana:
asana.project_gid and asana.workspace_gid from pm-config.ASANA_PAT is set as described in the Asana provider rules. Stop with setup instructions if not set.If .claude/overrides/rules/frontmatter.md exists, Read and follow it instead of ~/.claude/pm/rules/frontmatter.md. Otherwise Read ~/.claude/pm/rules/frontmatter.md.
If .claude/overrides/rules/task-quality.md exists, Read and follow it instead of ~/.claude/pm/rules/task-quality.md. Otherwise Read ~/.claude/pm/rules/task-quality.md.
Depending on the target:
Single feature (feature-name):
<project>/tasks/<feature-name>/ (all .md files)sync_id set (already synced)Single ticket (ticket-name):
<project>/tickets/<ticket-name>.mdsync_id, stop: "This ticket is already synced at <sync_url>"All (--all):
<project>/tasks/ for any task file with status: local<project>/tickets/ for any ticket with status: localRun /pm:validate on all files collected in Step 1. If any file fails validation, list the failures clearly and stop. Do not create any issues.
"These items have quality issues and cannot be synced. Fix them and try again:"
Use AskUserQuestion to ask about grouping, with options built from the provider pattern:
Follow the milestone/version/section pattern from the provider rules loaded in setup.
Store the chosen value for use in Step 6. If the PM chooses none, omit that field from issue creation.
Skip this step entirely for Jira and Asana. Both place issues on the project automatically when created.
For GitHub: follow the project board pattern from the GitHub provider rules. Use AskUserQuestion to ask whether to add items to a project. If a project is chosen, store both its number and its id node ID. If "No project", skip the project step.
Show the PM a clear preview of what will be created:
Ready to sync to [provider: github_repo or jira host/project_key or asana project_gid]:
feature-name:
# task-title.md [S] [P1] Task title 1
# another-task.md [M] Task title 2 (depends on: task-title.md)
TICKETS:
# fix-login-redirect.md [bug, XS] [P2] Fix login redirect
Milestone: <chosen milestone/version or "none">
Project: <chosen project or "none"> (GitHub only)
Total: 2 tasks, 1 ticket = 3 issues
Proceed? (yes/no)
Use AskUserQuestion to get confirmation. If the PM says no, stop cleanly.
Follow the labels pattern from the provider rules loaded in setup.
For GitHub: check if labels exist in the repo and create any that are missing. For Jira: labels are global strings. No creation step is needed. For Asana: fetch existing tags in the workspace. Create any tags that are missing before proceeding.
The body of each issue is the markdown content of the local file, with YAML frontmatter stripped. Do not reformat or restructure the content. Skip any section whose body is empty.
For tasks only, append a footer after the last section:
---
_Spec section: <spec_section value>_
Follow the issue creation pattern from the provider rules loaded in setup. After creating each issue:
status: synced, sync_url, sync_id, updatedFor GitHub: if a project was chosen, add the issue to it and apply the priority field as described in the GitHub provider rules.
Maintain a visited set of filenames already processed in this sync run to prevent infinite loops from circular dependencies.
Before creating a task's issue, check its depends_on list. For each dependency filename listed:
sync_id.sync_id.If a circular dependency is detected, report it clearly and skip: "Circular dependency detected: -> -> ... -> . Skipping."
After all dependencies have a sync_id, follow the dependency linking pattern from the provider rules (append "Blocked by" to issue body for GitHub, create issue links for Jira, call addDependencies for Asana).
If any issue creation fails: report it clearly but continue with the rest. At the end, list what succeeded and what failed.
Print a summary of what was created. Use the issue ID format for the active provider (GitHub: #N, Jira: KEY-N, Asana: task GID).
Synced to [github_repo or jira host/project_key or asana project_gid]:
Task #43: Task title 1 [S] -> <url>
Task #44: Task title 2 [M] -> <url>
Bug #45: Fix login redirect -> <url>
3 issues created.
If there were failures, list them at the end.