[#232] feat: shared lint/format config guideline + setup-gates provisioning#273
Conversation
Review InformationPR Number: #273 Review SummaryOverall Assessment
Key Changes SummaryNew KB guideline Business Value ValidationDelivers on R7.1 (centralized, consistent quality tooling at bootstrap) for the documentation half. The provisioning half is implemented only in the not-yet-distributed dataset source — see Critical Issues. Code Review ChecklistFunctionality Review
Code Quality Assessment
Technical Standards Compliance
Security ReviewN/A — docs-only diff, no inputs, no secrets, no code paths. Testing ReviewTest Coverage Assessment
Testing FeedbackDocumentation Review
Detailed Review CommentsPositive FeedbackWhat's Done Well:
Issues to AddressCritical Issues
|
| Risk | Impact | Probability | Mitigation |
|---|---|---|---|
| Installed skill mirror stale relative to dataset source | Medium | High (confirmed) | Sync .claude/skills/pair-capability-setup-gates/SKILL.md in a follow-up commit |
| AC3 unverified by executed test | Medium | Medium | Add fixture-bootstrap QA or explicitly descope via recorded decision |
| D21/Q11 not traceable | Low | Medium | Record via ADL |
Business Risks
| Risk | Impact | Probability | Mitigation |
|---|---|---|---|
| External KB consumers unaffected (dataset source is correct); only this repo's self-use of the skill is stale until synced | Low | Low | No external action needed |
Tech Debt (new, introduced by this diff)
- Mirror drift —
.claude/skills/pair-capability-setup-gates/SKILL.mdnow diverges from its dataset source of truth; every future dataset-side edit to this skill compounds the drift until synced. - Untested AC3 — no fixture-bootstrap harness exists to verify the provisioning step actually produces a lint-green project; this is now a standing gap for any future change to the provisioning logic too, since there's no regression test to catch a break.
- Untraceable decision citation — D21/Q11 referenced three times in KB content with no backing record; anyone auditing "why husky" later has no paper trail.
Adoption Compliance
| Area | Status | Notes |
|---|---|---|
| Tech Stack | CONFORMANT | No new dependencies; no package.json changes |
| Architecture / ADR | NON-CONFORMANT | Hook-manager-default decision (D21/Q11) not recorded as ADR/ADL |
| Security | CONFORMANT | Docs-only diff, no security surface |
| Coding Standards | CONFORMANT | markdownlint/prettier clean, guideline structure matches conventions |
| Infrastructure | CONFORMANT | No infra changes |
| Skill-distribution convention (installed mirrors match dataset source) | NON-CONFORMANT | .claude/skills/pair-capability-setup-gates/SKILL.md not synced — breaks precedent set by 5f8aea5, d7bbd84, and others |
Decision
CHANGES-REQUESTED — one Critical issue (installed skill mirror not synced with the dataset source it's supposed to mirror, breaking this repo's own established convention and leaving AC2/AC3 unimplemented for this repo's dogfooded use) plus one Major issue (AC3's fixture-bootstrap QA never executed, per the story's own DoD). The documentation content itself (shared-config-packages.md, cross-links, docs site) is high quality and fully verified accurate — recommend keeping that as-is and addressing the mirror sync + fixture QA (or a recorded decision to descope the latter) before merge.
Per this project's review process: attempting self-approval via gh pr review --approve next — expected to fail with "cannot approve your own pull request" (GitHub limitation), noted for the record, not treated as an error.
52c8a0e to
b465885
Compare
b465885 to
4049bf6
Compare
4049bf6 to
78dcf60
Compare
…ioning KB guideline (shared-config-package pattern, per-type overrides, tools/* reference) + setup-gates provisioning step (configs + husky pre-commit/pre-push, D21/Q11 default, adoption-overridable, idempotent). Way-of-working hook-manager field + docs site pointers.
…dlint bin naming; add eslint→shared-config-packages link Step 5.3 now defers to on-disk hook-manager detection before defaulting to husky, matching Step 5.1's skip-if-detected rule. shared-config-packages.md distinguishes the markdownlint-check bin from the mdlint:check root script alias. eslint.md links forward to shared-config-packages.md.
78dcf60 to
b2d1eee
Compare
…rap QA, record D21/Q11 ADL - Sync .claude/skills/pair-capability-setup-gates/SKILL.md (installed mirror) with the dataset source: Step 1.3 detection, Step 5 provisioning (shared configs + husky hooks), edge cases, Output Format/Graceful Degradation/Notes updates, prefix-transformed (/pair-capability-record-decision, /pair-process-bootstrap, /pair-capability-setup-gates). - Execute the AC3 fixture-bootstrap QA (T-3): real fixture project, no prior config/hooks; provisioned @pair/eslint-config + @pair/prettier-config via the real bin-wrapper consumption mechanism; installed husky pre-commit/pre-push. Verified: pre-commit blocks a real lint violation, passes clean after fix; pre-push runs lint+prettier-check green. - Record decision-log/2026-07-08-husky-default-hook-manager.md (D21/Q11): the story's own AC/Business Rules cited "decision Q11" and "D21" with no backing record — closes the gap. Refs: #232
Remediation (commit
|
Review InformationPR Number: #273 Review SummaryOverall Assessment
Key Changes SummaryRe-review of commit Independent VerificationCritical → Resolved: installed skill mirror syncPulled Step 1.3 detection, Step 5 provisioning (shared configs + husky), edge cases, renumbered Step 6, and the Output Format/Graceful Degradation/Notes updates are all present in the installed mirror, correctly prefix-transformed. Major → Resolved: AC3 fixture-bootstrap QARe-executed the claimed dry run independently rather than trusting the remediation comment:
This is real, reproducible evidence — not just prose — that AC3's claim ("freshly bootstrapped project, lint passes out of the box") holds when the provisioning step described in Step 5 is followed. Reasonable scope for a natural-language skill with no automated execution runtime (consistent with how #244's algorithm was verified via hand-traced fixture rather than a permanent test harness). Minor → Resolved: D21/Q11 decision traceability
Open Question from previous review"Is mirror sync automatic at release time, or manual per PR?" — Answered by this remediation itself: manual per PR is the confirmed, working convention (this PR just did it by hand, consistent with Testing ReviewNo unrelated files in the final commit — confirmed the pre-push hook's Adoption Compliance
Tech DebtAll three items from the initial review's "Tech Debt (new, introduced by this diff)" section are closed by this remediation — no new debt introduced. DecisionAPPROVED — all Critical/Major/Minor findings resolved and independently re-verified against the actual pushed commit Per this project's review process: attempting self-approval via |
PR Information
PR Title: [#232] feat: shared lint/format config guideline + setup-gates provisioning
Story/Epic: #232 · Parent Epic #209 Code Quality & Testing foundations
Type: Feature / Documentation
Priority: P0 (Must-Have)
Assignee: Gianluca Carucci
Reviewers: N/A (solo-dev workflow, self-review via
/pair-process-review)Labels: user story
Summary
What Changed
Adds a new KB guideline (
shared-config-packages.md) documenting the shared-config-package pattern (one config package per lint/format/type concern, per-type overrides for backend/frontend/shared-lib,tools/*as pair's own reference implementation), and extends thepair-capability-setup-gatesskill with a new provisioning step that installs shared configs and husky pre-commit/pre-push hooks (husky = KB default per D21/Q11, adoption-overridable, idempotent, degrades gracefully for non-JS projects). Cross-links added fromeslint.md, the guideline README,way-of-working.md, and two docs-site pages (guidelines-catalog.mdx,team-setup.mdx).Why This Change
So every bootstrapped pair project starts with centralized, consistent lint/format/type tooling instead of hand-rolled, drifting per-workspace configs (R7.1).
Story Context
User Story: As a team bootstrapping a pair project, I want the shared lint/format config guideline + setup-gates provisioning (per-type overrides, husky pre-commit hook, pre-push lint) so that every pair project starts with centralized, consistent quality tooling (R7.1).
Acceptance Criteria: AC1 (guideline documents the pattern with
tools/*example), AC2 (setup-gates provisions configs + husky hooks, D21/Q11 default, adoption-overridable), AC3 (freshly bootstrapped project's lint passes out of the box) — see Definition of Done section below for coverage status.Changes Made
Implementation Details
shared-config-packages.md— generic pattern (5 rules), per-type override table,tools/*reference-implementation table with verified inlinetsconfig/eslint.config.cjsexamples, Hooks section (husky default + override), Non-JS/Polyglot degradation section.setup-gatesSKILL.md — Step 1.3 detection (existing shared configs / hook manager on disk), new Step 5 "Provision Shared Lint/Format Config + Hooks" (skip-if-present, per-concern provisioning, hook-manager selection order: on-disk detection → adoption override → husky default, edge cases for conflicting config / non-JS), old Step 5 (Record Decision) renumbered to Step 6.9277918) corrected an initial Step 5.3 bug where husky was chosen unconditionally instead of deferring to Step 1.3's on-disk detection; also fixedmarkdownlint-checkbin vsmdlint:checkscript-alias terminology, and added theeslint.md → shared-config-packages.mdforward link.way-of-working.mddataset fixture gained "Hook manager" and "Shared config packages" adoption bullets; docs site (guidelines-catalog.mdx,team-setup.mdx) updated to point at the new guideline and the/pair-capability-setup-gatesautomation path.Files Changed
packages/knowledge-hub/dataset/.skills/capability/setup-gates/SKILL.md,.../code-design/quality-standards/README.md,.../code-design/quality-standards/eslint.md,.../adoption/tech/way-of-working.md,apps/website/content/docs/reference/guidelines-catalog.mdx,apps/website/content/docs/tutorials/team-setup.mdxpackages/knowledge-hub/dataset/.pair/knowledge/guidelines/code-design/quality-standards/shared-config-packages.mdDatabase Changes
N/A — no database in scope.
API Changes
N/A — no API surface touched.
Testing
Test Coverage
shared-config-packages.md(bin names,tsconfigextendstargets, per-workspace overrides) was verified against the realtools/*/package.jsonand consuming workspaces' config files — no discrepancies found. The story's own DoD item "Bootstrap test on a fixture repo (hooks fire, lint green)" was not executed — no fixture-repo artifact exists anywhere in the repo (see Detailed Comments / Follow-up Work).Test Results
Testing Strategy
Quality Assurance
Code Quality Checklist
quality-standards/)tools/*/package.jsonand consuming workspaces.pair/adoption/tech/adr/oradl/, nor by anything in parent Epic Code Quality & Testing foundations #209's body — see Detailed Comments.Review Areas
Deployment Information
Environment Impact
/pair-capability-setup-gatesDeployment Notes
package.jsonchanges in this diffRollback Plan
Revert the PR — all changes are additive documentation/skill-content; no migrations or runtime state to unwind.
Breaking Changes
API Breaking Changes
N/A
Integration Breaking Changes
N/A —
setup-gates's new Step 5 is additive; existing Steps 1–4 behavior (now step-shifted by one) is preserved, only the "Record Decision" step number changed (5→6), which is an internal skill-doc reference, not a consumer-facing contract.Migration Guide
N/A
Documentation
Documentation Updates
quality-standards/README.md— new guideline indexed in both listsguidelines-catalog.mdx,team-setup.mdxupdatedeslint.mdforward link,way-of-working.mdadoption bulletsKnowledge Sharing
tools/*walkthroughPerformance Impact
N/A — documentation/skill-content only, no runtime code paths added or changed.
Security Considerations
N/A — no code, no inputs, no secrets touched. Docs-only diff.
Accessibility
N/A — no UI changes (docs-site MDX prose changes only, using existing site components).
Risk Assessment
Technical Risks
.claude/skills/pair-capability-setup-gates/SKILL.mdmirror in this repo was not updated alongside the dataset sourceBusiness Risks
/pair-capability-setup-gates(external projects installing the KB) are unaffected — only this repo's own dogfooded mirror is staleReviewer Guide
Review Focus Areas
tools/*claim inshared-config-packages.mdagainst the real packages9277918)Testing the Changes
git checkout feature/#232-shared-lint-format-config pnpm install pnpm quality-gate pnpm smoke-tests pnpm --filter @pair/website e2eKey Test Scenarios
shared-config-packages.md, cross-check thetools/*reference table againsttools/*/package.json.SKILL.mdStep 5, confirm Step 5.3 defers to Step 1.3 detection before defaulting to husky..claude/skills/pair-capability-setup-gates/SKILL.md(installed mirror) — check whether it reflects the new Step 5 (it does not, as of this diff).Dependencies & Related Work
Blocking Dependencies
N/A
Related PRs
Follow-up Work
.claude/skills/pair-capability-setup-gates/SKILL.mdmirror with the dataset source (see Risk Assessment)Stakeholder Communication
N/A — solo-dev workflow, no external stakeholder notification required for this change.
Pre-Submission Checklist
Before Creating PR
pnpm quality-gate,pnpm smoke-tests,pnpm --filter @pair/website e2eall passingPR Description Complete
Ready for Review
main(branch rebased onto latest main)