project
GitHub Issues as PLAN.md replacement — agents read/update them. Auto-invoke on issue-linked branches. Triggers "what's the plan", "project status", "sync with github", "close the issue".
适合你,如果使用GitHub Issues管理任务并希望AI自动更新状态
npx oh-my-skill add darkroomengineering/cc-settings/projectcurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- darkroomengineering/cc-settings/projectnpx oh-my-skill verify darkroomengineering/cc-settings/project怎么用
商店整理自技能原文 · 版本 fa04efc · 表述以原文为准当你在当前 Git 分支上工作时,Claude 会自动读取关联的 GitHub Issue 作为计划,并在你完成任务后更新 Issue 的进度、勾选待办项。它也能帮你创建新 Issue、查看项目看板。
当你进入一个与 GitHub Issue 关联的分支时自动触发,或者当你说出“what's the plan”、“project status”、“sync with github”等关键词时。
技能原文 SKILL.md
GitHub Project Sync
Bridge between Claude Code sessions and GitHub Issues/Projects. Issues are the plan — agents read them for context and update them with progress.
Core Concept
GitHub Issues replace local PLAN.md files. Each issue contains:
- Scope and constraints
- Task breakdown (checkboxes)
- Design decisions and rationale
- Implementation notes (via comments)
- Linked commits and PRs
This means project context is shared, versioned, and visible to every team member and their agents — not locked in local handoff files.
Actions
Check current issue (auto on session start)
Detect the current branch and find its linked issue:
# Get current branch BRANCH=$(git branch --show-current) # Extract issue number from branch name (e.g., feat/123-description, fix/42-title) ISSUE_NUM=$(echo "$BRANCH" | grep -oE '[0-9]+' | head -1) # Read the issue for context if [[ -n "$ISSUE_NUM" ]]; then gh issue view "$ISSUE_NUM" --comments fi
If an issue is found, present a brief summary:
- Issue title and status
- Task checklist progress (X/Y completed)
- Most recent comment (latest context)
- Assigned labels and milestone
Update issue with progress
After completing work or at session end:
# Add a progress comment gh issue comment ISSUE_NUM --body "## Progress Update ### Completed - [x] Task description - [x] Another task ### Files Modified - \`path/to/file.ts\` — description of change ### Notes Any decisions made or context for next session. ### Next Steps - [ ] Remaining work"
Check off tasks in issue body
When tasks from the issue body are completed:
# View current issue body, update checkboxes, edit gh issue edit ISSUE_NUM --body "$(updated body with checked items)"
View project board status
# List issues assigned to you gh issue list --assignee @me --state open # List issues in a milestone gh issue list --milestone "v2.0" # List project items gh project item-list PROJECT_NUM --owner ORG --format json
Create an issue from a plan
When the user describes a feature or task:
gh issue create --title "feat: description" --body "$(cat <<EOF ## Goal What we're building and why. ## Tasks - [ ] Task 1 — verify: \`command\` → expected output - [ ] Task 2 - [ ] Task 3 ## Decisions - Decision 1: rationale - Decision 2: rationale ## Constraints - Any known constraints or requirements ## Plan stamp Written against $(git rev-parse --short HEAD) on $(git branch --show-current). EOF )"
The plan stamp anchors the issue to the commit it was written against — file paths, line refs, and task assumptions are only guaranteed valid at that SHA. Give tasks machine-checkable done criteria (command → expected output) where possible, not prose.
Body shaping follows rules/git.md "Issue descriptions": observed effect first, numbered one-action repro steps, one issue per problem — tangents become their own linked issues.
Reconcile a stale issue
Before resuming an issue whose plan stamp is behind the current HEAD, reconcile instead of trusting it:
# What changed since the plan was written? git log --oneline PLAN_SHA..HEAD git diff --stat PLAN_SHA..HEAD
- Verify checked tasks — re-run their done-criteria commands; a task that no longer passes gets unchecked with a comment, not silently trusted.
- Refresh drifted tasks — file paths and line refs may have moved; re-check them against HEAD and edit the body.
- Retire dead tasks — work made obsolete by intervening merges gets struck through with a one-line reason, so future audits don't re-litigate it.
- Re-stamp the body with the new SHA once reconciled.
Link commits to issues
When committing, reference the issue:
git commit -m "feat: description Refs #ISSUE_NUM"
Session Workflow
Starting a session
- Detect branch → find linked issue
- Read issue body + recent comments for context
- Present summary: "You're working on #123: Title. 3/7 tasks done. Last update: ..."
During work
- Reference the issue task list for what to work on next
- Make progress on tasks, verify with build/tests
Ending a session
- Comment on the issue with progress update
- Check off completed tasks in the issue body
- Create handoff (existing system) for local session state
Branch Naming Convention
For auto-detection, use branches that include the issue number:
feat/123-add-coupon-validation fix/42-login-redirect-loop chore/88-upgrade-dependencies
The skill extracts the first number from the branch name and looks up that issue.
When There's No Linked Issue
If the branch doesn't match an issue:
- Show open issues assigned to the user:
gh issue list --assignee @me - Offer to create a new issue from the current work
- Fall back to the regular handoff system
Integration with Handoffs
This skill complements the existing handoff system:
- GitHub Issue = shared project state (team-visible, persistent)
- Local handoff = session state (personal, ephemeral)
Both get updated. The issue is the source of truth for project progress. The handoff captures session-specific context (open files, debug state, personal notes).