Loading...
Loading...
Use when the user asks to audit what's wrong with a project, "make it right", "看看项目出了什么问题", "为什么用户的需求还没上线", "为什么没提交App Store", "为什么没新build", or wants a holistic state-of-the-project check covering unmerged branches, stalled PRs, failed GitHub Actions, stale builds, plan drift (TODOS.md / ROADMAP), unreleased commits, and log errors. Runs read-only investigation, presents a grouped checklist, fixes only after explicit user confirmation. Aware of the Cathier iOS app workflow (Xcode + fastlane + auto-merge @claude PRs from in-app feedback).
npx skill4agent add jianshuo/claude-skills wjs-auditing-projectgit statusgit stash listgit branch -vvgit log --oneline main..HEADgit fetch origin --prune && git log --oneline HEAD..@{upstream}git branch -r --merged maingit branch -r --no-merged maingh pr list --state open --json number,title,isDraft,mergeable,mergeStateStatus,updatedAt,author,headRefNamemergeStateStatusCLEANgh pr checks <num>gh pr list --author "app/claude" --state all --limit 20gh run list --limit 20 --json conclusion,name,headBranch,createdAt,databaseId,eventgh run list --status failure --limit 10maingh run view <id> --log-failed | tail -100grep -E "MARKETING_VERSION|CURRENT_PROJECT_VERSION" *.xcodeproj/project.pbxproj | sort -ugit tag --sort=-creatordate | head -5git log --oneline <last-tag>..mainfastlane/fastlane/report.xmlpilotdelivergit log -1 --format="%ai %s" -- fastlane/git log --all --grep="bump\|version\|build" -10 --onelineTODOS.mdCHANGELOG.mdAPP_STORE_SUBMISSION_GUIDE.mdROADMAP.mddocs/plan*.mdgrep -rn "TODO\|FIXME\|XXX" --include="*.swift" .ls -t ~/Library/Logs/DiagnosticReports/Cathier* 2>/dev/null | head -5log show --predicate 'process == "Cathier"' --last 1d --style compact 2>/dev/null | grep -iE "error|fault" | head -20ls -t ~/Library/Developer/Xcode/DerivedData/*/Logs/Build/*.xcactivitylog 2>/dev/null | head -3gh pr list --author "app/claude" --state all## What I found
### 🔴 Blocking (these gate everything else)
- [ ] PR #42 "Add jokes redesign": 3 failing checks (SwiftLint, build, tests). Last commit 2026-04-30. → Read logs, fix, push?
- [ ] main is 7 commits ahead of last tag v1.4.0 (2026-03-22). No TestFlight build since then. → Tag v1.5.0 and prep release notes?
### 🟡 Open work
- [ ] Local branch `home-simplification` has 5 commits, no open PR, last activity 2026-05-08. → Open PR against main?
- [ ] Stash "WIP: brain trainer stats" from 2026-04-02. → Show diff and decide drop/apply?
### 🟢 Plan drift (TODOS.md / fastlane)
- [ ] TODOS.md line 14: "Submit App Store build by 2026-04-30" — overdue 11d, no `fastlane pilot` invocation since 2026-03-12.
- [ ] TODOS.md line 22: "Hook up haptics on streak page" — no matching commit on main.
- [ ] 2 auto-merged @claude PRs (#88, #91) from in-app feedback merged after last TestFlight build — user feedback shipped to main but not to TestFlight.
### Logs / errors
- [ ] 23 errors in last 24h matching "NSURLErrorDomain -1009" (offline path) — investigate or note as expected?
- [ ] 1 crash report from 2026-05-10 in DiagnosticReports — pull stack and triage?
### Looks fine
- Working tree clean, no orphan branches on origin, no failed CI on main this week.gh pr creategh run rerun <id>gh pr merge --squash --autoMARKETING_VERSIONCURRENT_PROJECT_VERSIONproject.pbxprojgit tag!! fastlane pilot upload! open Cathier.xcodeprojgit reset --hardgit push --force| Finding | Standard fix |
|---|---|
| Local branch ahead of main, no PR | Rebase on main, push, |
| PR failing CI on same step twice | Read failed log, fix root cause, don't blindly rerun |
| Unreleased commits + stale TestFlight | Bump build number, tag, write release notes, prompt user to run |
| Stash >30 days, unclear context | Show |
| TODOS.md item with no commit | Surface to user — descoped or forgotten? Don't assume |
| Auto-merged feedback PRs newer than last build | The fix is a new TestFlight build, not more code changes |
| Surface the deadline + last submission date; user decides priority |
| Thought | Reality |
|---|---|
| "I'll just fix it and skip the checklist" | No. The user asked specifically for the audit-then-confirm flow. |
| "The PR looks safe to merge, I'll do it" | Only if they confirmed this PR by name in their reply. |
| "I'll force-push to clean up history" | Never without explicit per-action confirmation. |
| "Let me close that stuck PR to tidy up" | Investigate first; the work may be salvageable. |
| "I'll submit to App Store on their behalf" | Never. Print the |
| "The crash report is probably nothing" | Pull the stack and surface it. Let the user decide. |
| "Plan item is old, must be obsolete" | Ask. Don't delete plan entries. |
/Users/jianshuo/code/Cathierfastlane/TODOS.mdAPP_STORE_SUBMISSION_GUIDE.mdapp/claudeghfastlane