[#229] feat: pair-capability-grill interview engine#267
Conversation
Review InformationPR Number: #267 Review SummaryOverall Assessment
Key Changes SummaryAdds Business Value ValidationDelivers a reusable interview discipline (one-at-a-time, always-recommend, explore-first, write-free) intended to be composed by Code Review ChecklistFunctionality Review
Code Quality Assessment
Technical Standards Compliance
Security ReviewSecurity Checklist
Security Concerns
Testing ReviewTest Coverage Assessment
Test Quality ReviewN/A — no automated tests exist for skill prose content in this repo (consistent with every other Testing FeedbackReal, disclosed gap (flagging only, not treated as blocking): The story's own Validation and Testing Strategy calls for "scripted session transcripts (interview + sync); write-free audit." Repo-wide search ( Performance ReviewN/A across the board — no runtime code, no database, no API. Documentation ReviewDocumentation Checklist
Documentation Quality
Detailed Review CommentsPositive FeedbackWhat's Done Well:
Issues to AddressCritical Issues
|
| Risk | Impact | Probability | Mitigation |
|---|---|---|---|
| Write-free contract unverified by execution | Medium | Medium | Scripted write-free audit before composing into refine-story's real writes |
| Composition contract (refine-story shape) unverified with a mock caller | Low | Medium | Mock-caller test once /pair-process-refine-story phase 0 exists |
| Sync-mode session length (story's own risk) | Medium | Medium | Already mitigated by risk-ordered checklist + skip-if-explored (L113-114) |
Business Risks
| Risk | Impact | Probability | Mitigation |
|---|---|---|---|
| Doc count drift as more skills are added | Low | Medium | docs:staleness quality-gate check already catches this automatically |
| Grill ships with no consumer, value not yet realized | Low | High | Tracked by dependent stories #230 and refine-story extension (#202 epic) |
Deployment Considerations
Deployment Checklist
- Database Migration — N/A
- Configuration — N/A
- Feature Flags — N/A, not flag-gated (skill files are additive/opt-in by nature)
- Rollback Plan — Trivial: delete the skill file + distributed copy + revert doc counts
- Monitoring — N/A,
docs:stalenessgate is the only relevant automated check and it's green - Documentation — Updated and verified accurate (see Documentation Review)
Tech Debt Assessment
New debt introduced by this diff specifically:
- Missing verification artifacts (Medium priority, Medium impact × Low effort to close) — No scripted transcripts or write-free audit exist despite being explicitly called for by the story. Low effort to close (a few conversation-driven sessions), medium impact because it's the story's core safety guarantee. Recommend prioritizing before refine-story composition lands.
- One-sided composition contract (Low priority, Low impact × Medium effort to close) — Composition Interface documents the refine-story shape but nothing on the other end exists to validate it against. Naturally resolves once refine-story phase 0 is built and a mock-caller test is added; not worth separate tracking beyond the dependent story already in the backlog.
No pre-existing repo debt is being newly surfaced by this review — both items above are scoped strictly to this diff's own unmet DoD boxes.
Adoption Compliance
| Area | Status | Notes |
|---|---|---|
| Tech Stack (dependencies) | CONFORMANT | No package.json/lockfile changes in this diff — nothing new to record. |
| Architecture / ADR | CONFORMANT | No new architectural pattern; addition fits within existing skills infrastructure (ADR-005) — no new ADR required. |
| Security | CONFORMANT | No code, no secrets, no external calls; write-free contract is the relevant control and is documented (verification gap noted above, not a compliance failure). |
| Coding Standards | CONFORMANT | Follows the established skill-authoring convention used by every sibling pair-capability-* skill. |
| Infrastructure | CONFORMANT | No infra changes. |
| Decision Recording (ADL) | MINOR GAP | Decision Q8 (standalone allowed) is recorded in issue prose only, not as a dedicated decision-log entry — see Minor Issues above; not blocking. |
Follow-up Actions
Author Action Items
- Medium priority — Produce scripted interview + sync session transcripts and a write-free audit, and check off the two currently-unchecked DoD boxes on issue pair-capability-grill — interview engine (interview|sync modes) #229 (no deadline set by this review; recommend before refine-story composition work begins).
Reviewer Follow-up
- Re-review — Not required before merge (no critical/blocking issues); recommend a lightweight follow-up review once the write-free audit lands.
Team Actions
- Process Improvement — Consider whether "scripted verification transcript" should become a checked-by-CI or checked-by-reviewer gate for future write-free/safety-critical skills, given this is the second time (per the issue's own notes) that a stated DoD item shipped unchecked.
Review Timeline
Review Process
- Review Started: 2026-07-07
- Initial Review Completed: 2026-07-07
- Final Assessment: Approved with Comments (tech debt tracked, not blocking)
Review Effort
- Time Spent Reviewing: ~45 minutes (diff read, issue cross-check, template verification, quality-gate/smoke-tests/e2e run, doc-count independent verification, link-resolution check)
- Complexity Level: Low (no runtime code) but High diligence required (safety-relevant write-free claim needed independent verification of absence of evidence)
- Review Thoroughness: Deep
Verdict: TECH-DEBT (approve with tracking)
No critical issues, no missing ADR, no security holes, no failing quality gates/tests. The one Major issue (missing write-free audit / mock-caller verification) is a real, honestly-disclosed gap consistent with "minor issues or debt items" rather than a blocker — grill has no live composer yet, so nothing in production depends on the unverified property today. Recommend tracking the two follow-up action items above rather than requesting changes on this PR.
Note on self-approval: Per GitHub's own restriction, gh pr review --approve on this PR by the same actor that opened it will fail ("cannot approve your own pull request"). Attempted and confirmed below — this is expected and does not indicate a review-process failure.
e12cb71 to
298eb19
Compare
298eb19 to
ae24163
Compare
ae24163 to
1bb14e7
Compare
1bb14e7 to
cffeecc
Compare
one-question-at-a-time capability, interview|sync modes, write-free. sync mode = systematic story coverage (goal/AC/edge/deps/design/risks) until explicit shared understanding. distributes to .claude/skills; catalog docs + skills-guide updated.
Goal aspect mapped to Refined template's only matching section (Story Statement; User Value is Initial-Breakdown-only). Reconciled capability count to 22 (verified dir count) across skills-guide and website docs; skills-catalog.mdx was already correct.
…base Found while rebasing this branch onto the updated main: this file's own "Process 11 / Capability 22" counts predate #246's process→capability reclassification and weren't part of the rebase conflict (git auto-merged it verbatim since main never touched this specific file). Corrected to Process 9 / Capability 24, consistent with skills-guide.md and skills-catalog.mdx. Also fixed a pre-existing MD012 (multiple blank lines) markdownlint violation at EOF. Refs: #229
cffeecc to
70605aa
Compare
…iew remediation) - Add a HITL self-answering guard to Step 3 (both SKILL.md copies): the agent must never answer a question on the human's behalf or treat a missing reply as acceptance. Inspired by an equivalent fix landed in mattpocock/skills' wayfinder/grilling (v1.1, 2026-07-06): "a grilling agent that answers its own questions has broken this." - Record decision-log/2026-07-08-grill-standalone-no-composition-context.md (Q8): the story's own AC/Composition Interface cite "decision Q8" with no backing record — same gap pattern closed for D21/Q11 in #232. Refs: #229
PR Information
PR Title: [#229] feat: pair-capability-grill interview engine
Story/Epic: #229 (pair-capability-grill — interview engine); Parent Epic #205 (Structured & parametrized brainstorming)
Type: Feature
Priority: P0 (Must-Have)
Assignee: N/A (agent-authored)
Reviewers: N/A
Labels: feature, documentation, skills
Summary
What Changed
Adds a new capability skill,
pair-capability-grill(.claude/skills/pair-capability-grill/SKILL.md), a reusable write-free interview engine with two modes:interview— freeform exploration of a topic, one question at a time, always with a recommendation.sync— systematic AI↔human alignment across six story aspects (Goal, AC, Edge Cases, Dependencies, Design, Risks), ending only on explicit shared-understanding confirmation.The skill explores the KB/codebase before asking anything answerable that way, never writes to adoption files or PM tool issues (the only permitted write is an optional
.pair/working/handoff), and is invocable standalone or composed by/pair-process-brainstorm(phase 1) and a future/pair-process-refine-storyphase 0.Docs and distribution were updated to catalog the new skill and reconcile capability/total skill counts (20→22 capability, 32/33→34 total) across the docs site and
.pair/knowledge/skills-guide.md, plus the packagedknowledge-hubdataset copy.A second commit (
0b55179/e12cb71on this branch) fixed a mapping bug found during self-review: the Sync Coverage Checklist's Goal row referenced aUser Valuesection that only exists in the template's Initial Breakdown, not the Refined User Story Template thatsyncmode targets — removed. The same commit also reconciled the capability count, which had been bumped 20→21 in the first commit against a stale baseline rather than the actual directory count (22).Why This Change
Interviews currently happen ad hoc and inconsistently across brainstorm and refine-story. This story extracts a single, reusable, write-free interview engine so both flows (and standalone use) share the same one-at-a-time / always-recommend / explore-first discipline, and so the
syncmode can gate the Ready transition (R3.11) on an explicit, systematically-covered shared understanding rather than an implicit one.Story Context
User Story: As a pair user in discovery or refinement, I want
pair-capability-grill— a reusable, write-free interview engine (one question at a time, always with a recommendation, exploring KB/codebase before asking) with asyncmode for AI↔human story alignment — so that interviews are consistent across brainstorm and refine, and shared understanding gates the Ready transition (R3.11).Acceptance Criteria:
$mode: synccovers all six story aspects systematically and ends only at explicit shared understanding, returning the alignment synthesis to the caller..pair/working/handoff on request.Changes Made
Implementation Details
.claude/skills/pair-capability-grill/SKILL.md— frontmatter, Arguments ($mode/$topic/$story/$context/$aspects), Modes, 7-step Algorithm (Step 0 mode/target detection + HALT, Step 1 explore-first, Step 2 queue building, Step 3 one-question-at-a-time with mandatory recommendation, Step 4 explicit-confirmation-only exit, Step 5 synthesis assembly, Step 6 return-never-write + optional handoff), Sync Coverage Checklist, Output Format, Composition Interface, Example Transcripts, Edge Cases, HALT Conditions, Graceful Degradation, Notes..pair/working/handoff file convention (naming, content, degradation path if the directory can't be written).skills-catalog.mdx,writing-skills.mdx,skill-management.mdx) and.pair/knowledge/skills-guide.md(project + distributed copies) with a new "Discovery" category and reconciled skill counts; added the distributed copypackages/knowledge-hub/dataset/.skills/capability/grill/SKILL.md.Files Changed
.pair/knowledge/skills-guide.md,packages/knowledge-hub/dataset/.pair/knowledge/skills-guide.md,apps/website/content/docs/contributing/writing-skills.mdx,apps/website/content/docs/reference/skill-management.mdx,apps/website/content/docs/reference/skills-catalog.mdx.claude/skills/pair-capability-grill/SKILL.md,packages/knowledge-hub/dataset/.skills/capability/grill/SKILL.mdDatabase Changes
N/A — no database involved in this repo/change.
API Changes
N/A — no API surface changed; this is a prose skill definition (no runtime code per story sizing).
Testing
Test Coverage
@pair/websitee2e suite re-run (see Test Results) since this branch touches docs-site pages/counts.Test Results
Testing Strategy
syncmode's HALT when no target story is resolvable is specified (Step 0.4 / HALT Conditions) but not exercised.Quality Assurance
Code Quality Checklist
pair-capability-*skills)Review Areas
Deployment Information
Environment Impact
.claude/skills/packages/knowledge-hub/dataset/on next knowledge-hub releaseDeployment Notes
package.jsonchanges in this diff)Rollback Plan
Revert the commits / delete
.claude/skills/pair-capability-grill/and the distributed dataset copy, and revert the doc count changes. No data or runtime state to roll back.Breaking Changes
API Breaking Changes
N/A — no API in this repo affected.
Integration Breaking Changes
N/A — grill is a net-new, opt-in composition point; nothing currently calls it (refine-story's phase 0 composition is documented as a future extension, not yet wired).
Migration Guide
N/A.
Documentation
Documentation Updates
skills-catalog.mdx, count bumps inwriting-skills.mdx/skill-management.mdx.pair/knowledge/skills-guide.mdupdated with new "Discovery Skills (1)" subsection and directory tree entryKnowledge Sharing
User Valuesection reference) and count-reconciliation miss are both disclosed in the issue's Task Breakdown notes and fixed in the follow-up commit on this branchPerformance Impact
Performance Metrics
Benchmarking Results
N/A — no runtime code, nothing to benchmark.
Monitoring
Security Considerations
Security Review
Security Testing
Accessibility
Accessibility Compliance
N/A — no UI shipped in this change (docs-site count/text edits only, no new components).
Accessibility Testing
N/A.
Risk Assessment
Technical Risks
/pair-process-refine-storyphase 0 landsBusiness Risks
docs:stalenessquality-gate check already catches this (ran PASS)Reviewer Guide
Review Focus Areas
pair-capability-*skills, correctness of the Sync Coverage Checklist's section-name mapping againstuser-story-template.md.Testing the Changes
Key Test Scenarios
interviewmode with no$topic— should ask for the topic first, then proceed one question at a time with recommendations.syncmode with$storypointing at a partially-refined story — should skip already-covered aspects and only queue genuinely open ones.syncmode with no$storyand no composer$context— should HALT per Step 0.4.Dependencies & Related Work
Blocking Dependencies
Related PRs
Follow-up Work
Stakeholder Communication
Stakeholder Notification
Communication Plan