Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/agents/exec-assist.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ After processing all items, provide a structured summary:
| Item needs research before filing | deep-researcher |
| Item affects documentation | docs-writer |
| Item needs priority assessment | project-manager |
| Item reveals a process failure | ai-eng |
| Item reveals a process failure | ai-eng |

When routing to teammates, provide:

Expand Down
2 changes: 1 addition & 1 deletion .claude/agents/project-manager.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ You are the team's coordinator. You maintain the task list, assign work to the r
| Documentation updates | docs-writer (Tweety Bird) |
| CI/CD and distribution | ops-eng (Foghorn Leghorn) |
| Deep research questions | deep-researcher (Road Runner) |
| Process/failure review | ai-eng (Wile E. Coyote) |
| Process/failure review | ai-eng (Wile E. Coyote) |

### Monitoring Progress

Expand Down
39 changes: 20 additions & 19 deletions .claude/pr-reviews/REVIEW-SESSION-SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,30 @@

### agent-team Repository

| PR # | Title | Score | Status | Notes |
|:-----|:------|------:|:-------|:------|
| 97 | Rename fmt→format, add check meta-task | 98/100 | ✅ MERGE | Trivial, clean, all categories ≥85% |
| PR # | Title | Score | Status | Notes |
| :--- | :------------------------------------- | -----: | :------- | :---------------------------------- |
| 97 | Rename fmt→format, add check meta-task | 98/100 | ✅ MERGE | Trivial, clean, all categories ≥85% |

### ai-mktpl Repository

| PR # | Title | Score | Status | Notes |
|:-----|:------|------:|:-------|:------|
| 185 | context-bloat-prevention plugin | 96/100 | ✅ MERGE | Verify plugin dir exists before merge |
| 191 | answer-before-acting rule | 94/100 | ✅ MERGE | Minor: unrelated formatting bundled |
| 184 | git-spice push rejection hook | 94/100 | ✅ MERGE | Low findings: timeout, error handling |
| 192 | statusline settings.local.json fix | 93/100 | ✅ MERGE | Low findings: race condition possible |
| 181 | agent-tab-titles plugin | 94/100 | ✅ MERGE | Low findings: silent failures in tmux |
| 183 | remote-config plugin | 93/100 | ✅ MERGE | Low findings: YAML parsing fragility |
| 188 | word-vomit plugin | 93/100 | ✅ MERGE | Low findings: agent dependency |
| 187 | skill-required plugin | 93/100 | ✅ MERGE | Medium findings: path collision risk |
| PR # | Title | Score | Status | Notes |
| :--- | :--------------------------------- | -----: | :------- | :------------------------------------ |
| 185 | context-bloat-prevention plugin | 96/100 | ✅ MERGE | Verify plugin dir exists before merge |
| 191 | answer-before-acting rule | 94/100 | ✅ MERGE | Minor: unrelated formatting bundled |
| 184 | git-spice push rejection hook | 94/100 | ✅ MERGE | Low findings: timeout, error handling |
| 192 | statusline settings.local.json fix | 93/100 | ✅ MERGE | Low findings: race condition possible |
| 181 | agent-tab-titles plugin | 94/100 | ✅ MERGE | Low findings: silent failures in tmux |
| 183 | remote-config plugin | 93/100 | ✅ MERGE | Low findings: YAML parsing fragility |
| 188 | word-vomit plugin | 93/100 | ✅ MERGE | Low findings: agent dependency |
| 187 | skill-required plugin | 93/100 | ✅ MERGE | Medium findings: path collision risk |

## Scoring Summary

| Score Range | Count | PRs |
|:-----------|------:|:-----|
| 96-98 | 2 | 97, 185 |
| 93-95 | 7 | 191, 184, 192, 181, 183, 188, 187 |
| Below 93 | 0 | — |
| Score Range | Count | PRs |
| :---------- | ----: | :-------------------------------- |
| 96-98 | 2 | 97, 185 |
| 93-95 | 7 | 191, 184, 192, 181, 183, 188, 187 |
| Below 93 | 0 | — |

**Average Score**: 93.8/100

Expand All @@ -45,6 +45,7 @@ All PRs have all 8 quality categories above 85%. No defects that prevent merging
### Low-Severity Findings (13 total)

Common patterns:

- Silent error handling (tmux scripts, git commands) — acceptable for non-critical operations
- Configuration/UX clarity — not blocking, can be improved in v0.2
- YAML parsing fragility — acceptable given simple config format
Expand All @@ -54,7 +55,6 @@ Common patterns:

1. **ai-mktpl#187 (skill-required)**: project_slug collision via sed — use hash instead
- Mitigation: Very unlikely in practice (requires dashes in project path)

2. **ai-mktpl#184 (git-spice hook)**: PreToolUse timeout 5s may be too short for slow `gs log short`
- Mitigation: Hook still works (allows push on timeout, which is safe-fail)

Expand All @@ -63,6 +63,7 @@ Both are acceptable for 0.1.0 releases.
## Report Files

All detailed reviews saved to:

- `/Users/nathan.heaps/src/nsheaps/agent-team/.claude/pr-reviews/nsheaps/agent-team/97/1771900804/OVERALL-REPORT.md`
- `/Users/nathan.heaps/src/nsheaps/agent-team/.claude/pr-reviews/nsheaps/ai-mktpl/{185,191,184,192,181,183,188,187}/1771900804/OVERALL-REPORT.md`

Expand Down
66 changes: 34 additions & 32 deletions .claude/pr-reviews/agent-templates/tpm-prodpm/OVERALL-REPORT.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@ Both templates are well-structured, follow the established agent format, and car

## Category Scores

| # | Category | Score | Status |
|---|----------|-------|--------|
| 1 | Simplicity | 90 | ✅ |
| 2 | Flexibility | 88 | ✅ |
| 3 | Usability | 88 | ✅ |
| 4 | Documentation | 90 | ✅ |
| 5 | Security | 92 | ✅ |
| 6 | Pattern Matching | 85 | ✅ |
| 7 | Best Practices | 88 | ✅ |
| 8 | General QA | 85 | ✅ |
| # | Category | Score | Status |
| --- | ---------------- | ----- | ------ |
| 1 | Simplicity | 90 | ✅ |
| 2 | Flexibility | 88 | ✅ |
| 3 | Usability | 88 | ✅ |
| 4 | Documentation | 90 | ✅ |
| 5 | Security | 92 | ✅ |
| 6 | Pattern Matching | 85 | ✅ |
| 7 | Best Practices | 88 | ✅ |
| 8 | General QA | 85 | ✅ |

---

Expand Down Expand Up @@ -88,6 +88,7 @@ Both templates are well-structured, follow the established agent format, and car

**Severity**: P4 (positive)
**Description**: Both files follow the established agent template format:

- Frontmatter with name, description (with examples), color, prompt_mode, base_prompt, framework, model, permission_mode, display_name, tools
- `<system-message>` block with character traits
- H1 with character name and role
Expand All @@ -106,41 +107,42 @@ Both templates are well-structured, follow the established agent format, and car
**Severity**: P4 (positive)
**Description**: The three PM-adjacent roles are clearly distinct:

| Role | Owns | Does NOT |
|------|------|----------|
| Project Manager (Elmer) | Task list, coordination, handoffs | Make technical decisions, write code |
| TPM (Porky) | Technical roadmap, trade-offs, dependencies | Assign tasks, write code |
| Product Manager (Pepé) | What to build and why, PRDs, acceptance criteria | Assign tasks, make architecture decisions |
| Role | Owns | Does NOT |
| ----------------------- | ------------------------------------------------ | ----------------------------------------- |
| Project Manager (Elmer) | Task list, coordination, handoffs | Make technical decisions, write code |
| TPM (Porky) | Technical roadmap, trade-offs, dependencies | Assign tasks, write code |
| Product Manager (Pepé) | What to build and why, PRDs, acceptance criteria | Assign tasks, make architecture decisions |

No meaningful overlap. The TPM explicitly notes it operates "at higher altitude than the Project Manager." The product PM explicitly defers architectural decisions to the TPM.

#### [format-3] Display name format is correct

**Severity**: P4 (positive)
**Description**: Both follow the "First L (role)" pattern:

- `Porky P (tpm)` — correct
- `Pepé L (product-mgr)` — correct

---

## Pattern Match Table

| Element | Expected (existing agents) | TPM | Product PM |
|---------|---------------------------|-----|------------|
| Frontmatter with examples | 3 examples | 3 examples ✅ | 3 examples ✅ |
| color (unique) | Unique per agent | cyan ✅ | magenta ⚠️ (conflicts with PM) |
| prompt_mode: extend | Yes | Yes ✅ | Yes ✅ |
| model: claude-opus-4-6 | Varies | opus ✅ | opus ✅ |
| permission_mode: bypassPermissions | Yes | Yes ✅ | Yes ✅ |
| display_name format | "First L (role)" | ✅ | ✅ |
| tools appropriate for role | Varies | Read-only + tasks ✅ | Read/Write + tasks ⚠️ (missing task tools) |
| disallowed_tools | Present on read-only agents | Present ✅ | Missing ⚠️ |
| system-message block | Present | Present ✅ | Present ✅ |
| Persona reference | Present | Present ✅ | Present ✅ |
| Session Start | Present | Present ✅ | Present ✅ |
| References section | Present | Present ✅ | Present ✅ |
| Edge cases section | Present | Present ✅ | Present ✅ |
| SendMessage warning | Present | Present ✅ | Not present ⚠️ |
| Element | Expected (existing agents) | TPM | Product PM |
| ---------------------------------- | --------------------------- | -------------------- | ------------------------------------------ |
| Frontmatter with examples | 3 examples | 3 examples ✅ | 3 examples ✅ |
| color (unique) | Unique per agent | cyan ✅ | magenta ⚠️ (conflicts with PM) |
| prompt_mode: extend | Yes | Yes ✅ | Yes ✅ |
| model: claude-opus-4-6 | Varies | opus ✅ | opus ✅ |
| permission_mode: bypassPermissions | Yes | Yes ✅ | Yes ✅ |
| display_name format | "First L (role)" | ✅ | ✅ |
| tools appropriate for role | Varies | Read-only + tasks ✅ | Read/Write + tasks ⚠️ (missing task tools) |
| disallowed_tools | Present on read-only agents | Present ✅ | Missing ⚠️ |
| system-message block | Present | Present ✅ | Present ✅ |
| Persona reference | Present | Present ✅ | Present ✅ |
| Session Start | Present | Present ✅ | Present ✅ |
| References section | Present | Present ✅ | Present ✅ |
| Edge cases section | Present | Present ✅ | Present ✅ |
| SendMessage warning | Present | Present ✅ | Not present ⚠️ |

---

Expand All @@ -150,4 +152,4 @@ Well-crafted agent templates with clear role differentiation. The two P2 finding

---

*Reviewed by Daffy D (qa) — 2026-02-24*
_Reviewed by Daffy D (qa) — 2026-02-24_
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
## Review: .github#16 — label sync workflow — Score: 84/100

| Category | Score | Notes |
|:---------|------:|:------|
| Simplicity | 88 | Clean, focused workflow. Matrix strategy for multi-repo sync is the right approach. Label YAML is simple and readable. |
| Flexibility | 82 | Repo list is hardcoded in the matrix. Adding a new org repo requires a PR to this file. No mechanism for per-repo label overrides. |
| Usability | 85 | `workflow_dispatch` provides manual trigger. `fail-fast: false` correctly ensures one repo failure doesn't block others. Clear label descriptions. |
| Documentation | 80 | No README or inline comments explain WHY specific labels exist, particularly the custom `p1-p4` priority labels or `needs-human-attention`. The file comment references `Financial-Times/github-label-sync` but the npm package installed is `github-label-sync` — same package, but the comment is confusing. |
| Security | 85 | GitHub App token generation scoped to `github.repository_owner`. `permissions: contents: read` is appropriately minimal. Token is used via environment variable, not exposed in logs. The `${{ matrix.repo }}` substitution in the `run` block is a potential shell injection risk if a repo name contained special characters — however, since this is a hardcoded matrix with fixed values, the risk is theoretical not practical. |
| Pattern Matching | 83 | Follows GitHub Actions workflow conventions. Uses `actions/checkout@v4`, `actions/setup-node@v4`, `actions/create-github-app-token@v2` — all current versions. No pinned commit SHAs (minor concern for supply chain security). |
| Best Practices | 82 | npm installed globally with `npm install -g` in CI — no lockfile, version is uncontrolled beyond the latest at install time. Should pin to a specific version: `npm install -g github-label-sync@2.x.x`. The `--allow-added-labels` flag means repos can accumulate extra labels over time and the sync won't clean them up — this is intentional but worth documenting. |
| General QA | 82 | The `if: ${{ secrets.AUTOMATION_GITHUB_APP_ID != '' }}` condition on the job will silently skip the entire job if the secret is not set, with no visible feedback. An author seeing a skipped job may not immediately understand why. |
| Category | Score | Notes |
| :--------------- | ----: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Simplicity | 88 | Clean, focused workflow. Matrix strategy for multi-repo sync is the right approach. Label YAML is simple and readable. |
| Flexibility | 82 | Repo list is hardcoded in the matrix. Adding a new org repo requires a PR to this file. No mechanism for per-repo label overrides. |
| Usability | 85 | `workflow_dispatch` provides manual trigger. `fail-fast: false` correctly ensures one repo failure doesn't block others. Clear label descriptions. |
| Documentation | 80 | No README or inline comments explain WHY specific labels exist, particularly the custom `p1-p4` priority labels or `needs-human-attention`. The file comment references `Financial-Times/github-label-sync` but the npm package installed is `github-label-sync` — same package, but the comment is confusing. |
| Security | 85 | GitHub App token generation scoped to `github.repository_owner`. `permissions: contents: read` is appropriately minimal. Token is used via environment variable, not exposed in logs. The `${{ matrix.repo }}` substitution in the `run` block is a potential shell injection risk if a repo name contained special characters — however, since this is a hardcoded matrix with fixed values, the risk is theoretical not practical. |
| Pattern Matching | 83 | Follows GitHub Actions workflow conventions. Uses `actions/checkout@v4`, `actions/setup-node@v4`, `actions/create-github-app-token@v2` — all current versions. No pinned commit SHAs (minor concern for supply chain security). |
| Best Practices | 82 | npm installed globally with `npm install -g` in CI — no lockfile, version is uncontrolled beyond the latest at install time. Should pin to a specific version: `npm install -g github-label-sync@2.x.x`. The `--allow-added-labels` flag means repos can accumulate extra labels over time and the sync won't clean them up — this is intentional but worth documenting. |
| General QA | 82 | The `if: ${{ secrets.AUTOMATION_GITHUB_APP_ID != '' }}` condition on the job will silently skip the entire job if the secret is not set, with no visible feedback. An author seeing a skipped job may not immediately understand why. |

> ⚠️ Multiple categories below 85% — Needs fixes or clarifications

Expand Down
Loading
Loading