Skip to content

[project-support] Propagate templates 2026-05-05 (hybrid-merge re-issue)#153

Open
fryanpan wants to merge 1 commit into
mainfrom
project-support/propagate-2026-05-05-hybrid
Open

[project-support] Propagate templates 2026-05-05 (hybrid-merge re-issue)#153
fryanpan wants to merge 1 commit into
mainfrom
project-support/propagate-2026-05-05-hybrid

Conversation

@fryanpan
Copy link
Copy Markdown
Owner

@fryanpan fryanpan commented May 5, 2026

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.md was 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

File Disposition
.claude/rules/workflow-conventions.md Hybrid: kept all of project's customizations — Multi-agent & 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. Added missing new template sections — Decision Framework, Superpowers Overrides (Brainstorming, Executing Plans, Finishing a Development Branch, Retro), Notifying the Conductor, plus the "Apply the Decision Framework" bullet under Autonomy.
.claude/skills/retro/SKILL.md, ship-it/SKILL.md, ticket-agent/SKILL.md, analyze_transcript.py Wholesale upgrade — project versions were older template versions, no customizations detected.
5 new rules + ux-review/ Pure addition.

Notes

After merge, a git pull is enough — project-level skills are read on demand.

🤖 Generated with Claude Code

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.
Copilot AI review requested due to automatic review settings May 5, 2026 01:51
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-review skill.
  • Rewrote ticket-agent, ship-it, and retro guidance around claude-hive/channel-driven workflows and autonomous retros.
  • Expanded analyze_transcript.py with 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))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants