[project-support] Propagate templates 2026-05-05 (hybrid-merge re-issue)#153
Open
fryanpan wants to merge 1 commit into
Open
[project-support] Propagate templates 2026-05-05 (hybrid-merge re-issue)#153fryanpan wants to merge 1 commit into
fryanpan wants to merge 1 commit into
Conversation
Re-issue of #152 with hybrid-merge approach. Original PR wholesale-replaced existing files for some peer repos, dropping project-specific customizations. Per-file disposition: - workflow-conventions.md: kept ALL of project's heavy customizations: - Multi-agent and lifecycle features edge case matrix (Planning) - Subagent-Driven Development as default execution strategy - Deployment Safety section - Codex CLI parallel review under Code Review - "### Review Criteria" subsection (4 evaluation criteria) Then integrated MISSING new template sections only: - Decision Framework - Superpowers Overrides (Brainstorming, Executing Plans, Finishing a Development Branch, Retro) - Notifying the Conductor - "Apply the Decision Framework" bullet under Autonomy - retro/SKILL.md, ship-it/SKILL.md, ticket-agent/SKILL.md: project versions were older template versions, no real customizations to preserve — wholesale upgrade is safe. - All other files: clean additions/upgrades.
There was a problem hiding this comment.
Pull request overview
This propagation re-syncs the repo’s Claude rules/skills with the latest template set, while preserving this project’s customized workflow conventions. It mainly updates the agent operating model for review/merge/retro flows and adds new cross-cutting rules for UX, Notion, live feedback, security, and public-content handling.
Changes:
- Added new rules for security posture, public-content scrubbing, Notion handling, and live-feedback defaults, plus a new
ux-reviewskill. - Rewrote
ticket-agent,ship-it, andretroguidance around claude-hive/channel-driven workflows and autonomous retros. - Expanded
analyze_transcript.pywith scan mode and token/cost reporting across sessions.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
.claude/skills/ux-review/SKILL.md |
Adds a new UX walkthrough/review skill for UI work. |
.claude/skills/ticket-agent/SKILL.md |
Updates ticket-agent lifecycle guidance to use claude-hive and channel-driven CI. |
.claude/skills/ship-it/SKILL.md |
Reworks post-implementation pipeline instructions around channel events instead of polling. |
.claude/skills/retro/SKILL.md |
Adds human-led vs autonomous retro behavior and parallel CLAUDE.md review guidance. |
.claude/skills/retro/scripts/analyze_transcript.py |
Adds scan mode plus per-turn/session token and cost reporting. |
.claude/rules/workflow-conventions.md |
Merges new decision-framework, autonomy, and conductor-notification guidance into repo conventions. |
.claude/rules/security-posture.md |
Adds operational security rules for multi-agent, multi-repo work. |
.claude/rules/public-content-scrubbing.md |
Adds review/redaction rules for public-facing content and repo publicity changes. |
.claude/rules/notion-mcp.md |
Documents Notion MCP identity, retry, fetch, and content-replacement conventions. |
.claude/rules/notion-channel-protocol.md |
Adds handling guidance for Notion events routed through channel messages. |
.claude/rules/live-feedback-default.md |
Makes live-feedback the default review surface for docs and previews. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| - **NEVER push directly to main.** All work goes through a PR. | ||
| - **You own the full PR lifecycle.** Create the PR, monitor CI, fix failures, and merge it yourself. | ||
| - **You own the full PR lifecycle.** Create the PR, await CI events from the `github-claude-channel` plugin (don't poll `gh pr checks` in a loop), fix failures, and merge it yourself. |
Comment on lines
+81
to
+84
| - The `github-claude-channel` plugin pushes CI events to your session as `<channel source="github" ...>` notifications. Call `watch_repo("auto")` once for this repo if it isn't already watched (idempotent). Then **await events instead of polling**. | ||
| - ✅ CI pass event → proceed to merge | ||
| - ❌ CI fail event → read failure via one `gh pr checks <pr-url>` call (not a loop), diagnose, fix, push, await the next event | ||
| - If no CI is configured (no event arrives): after a 30-min timeout, fall back to one explicit `gh pr checks <pr-url>` to confirm there are no checks, then proceed to merge |
Comment on lines
98
to
99
| - Database schema changes or migrations | ||
| - API contract changes (new/modified endpoints, changed request/response shapes) |
| - Changes isolated to a single file/module with no downstream dependencies | ||
| - Additive changes (new functions, new files) that don't modify existing behavior | ||
| - Call `merge_pr`, update status to `merged`, notify Slack: "PR merged! Task complete." | ||
| - Run `gh pr merge --squash --delete-branch`, send "PR merged — task complete" to the conductor |
Comment on lines
+67
to
+69
| The `github-claude-channel` plugin pushes GitHub events to your session as `<channel source="github" ...>` notifications. **Do NOT poll `gh pr checks` in a loop** — wait for the channel event instead. | ||
|
|
||
| ``` | ||
| Loop (max 10 iterations, 60s apart): | ||
| 1. Run: gh pr checks <pr-url> | ||
| 2. If all checks pass → done, return "ci_passed" | ||
| 3. If any check fails → read failure output, return "ci_failed" with details | ||
| 4. If checks still pending → wait 60s, retry | ||
| ``` | ||
|
|
||
| **On CI failure:** | ||
| - Read the failure details | ||
| - Attempt to fix (max 3 attempts) | ||
| - Push fix, restart CI monitoring | ||
| - After 3 failed attempts: report to user, stop | ||
| If `watch_repo("auto")` hasn't been called for this repo yet, call it once now. (Idempotent — safe to re-call.) |
| return str(n) | ||
|
|
||
|
|
||
| def _fmt_cost(c: float) -> str: |
| self.api_calls += 1 | ||
|
|
||
| def cost(self, family: str) -> float: | ||
| p = PRICING.get(family, PRICING["opus"]) |
Comment on lines
+659
to
+661
| if msg.get("role") == "user" and record.get("sourceToolAssistantUUID") is None and record.get("toolUseResult") is None: | ||
| if ts >= cutoff: | ||
| sc.turn_count += 1 |
| if a == "--hours" and i + 1 < len(args): | ||
| hours = float(args[i + 1]) | ||
| elif a == "--since" and i + 1 < len(args): | ||
| cutoff = datetime.fromisoformat(args[i + 1]).replace(tzinfo=timezone.utc) |
Comment on lines
+836
to
+844
| if cutoff is None: | ||
| cutoff = datetime.now(timezone.utc) - timedelta(hours=hours) | ||
|
|
||
| sessions = _find_sessions(cutoff) | ||
| if not sessions: | ||
| print(f"No transcripts found with activity in the last {hours:.0f}h.", file=sys.stderr) | ||
| sys.exit(1) | ||
|
|
||
| print(format_scan_report(sessions, hours)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Re-issue of #152 with hybrid-merge approach. Closes and supersedes #152.
The original 2026-05-05 propagation wholesale-replaced existing files. For product-engineer,
workflow-conventions.mdwas the most heavily customized file in the fleet. This re-issue keeps every project-specific section and only adds the missing new-template sections.Per-file disposition
.claude/rules/workflow-conventions.md.claude/skills/retro/SKILL.md,ship-it/SKILL.md,ticket-agent/SKILL.md,analyze_transcript.pyux-review/Notes
After merge, a
git pullis enough — project-level skills are read on demand.🤖 Generated with Claude Code