feat: add quality-sweep workflow with 8 health audit skills#7
Open
feat: add quality-sweep workflow with 8 health audit skills#7
Conversation
Add a multi-perspective health audit pipeline that runs 8 specialized audits in parallel, triages findings into quick-fixes vs story-worthy work, applies mechanical fixes directly, generates BMAD stories for structural improvements, and supports iterative audit-fix-reaudit loops. Health audit skills (8 perspectives): - health-audit (codebase & tech) - health-audit-ux (user experience) - health-audit-data (data & privacy) - health-audit-dx (developer experience) - health-audit-seo (SEO & web presence) - health-audit-api (API surface quality) - health-audit-ops (ops & deployment) - health-audit-domain (business logic & domain integrity) Orchestration: - health-sweep (parallel audit orchestrator with deduplication) - quality-sweep workflow (6-phase pipeline: audit → triage → quick-fix → plan → build → re-audit) Agents: - Astraea (triage) — classifies findings into Track A/B - Hephaestus (quick-fixer) — applies mechanical fixes - Daedalus (story architect) — generates BMAD stories from findings
package-lock.json was out of sync with package.json, causing npm ci to fail in CI. Also bumps expected workflow count from 17 to 18 to account for the new quality-sweep workflow.
There was a problem hiding this comment.
Pull request overview
Adds a new quality-sweep workflow and supporting Pantheon skills to run multi-perspective health audits, triage findings into quick-fixes vs story work, optionally build via batch-stories, and re-audit to measure score improvement.
Changes:
- Introduces the
quality-sweepworkflow (YAML config + orchestration docs + 6 phase files + 3 agent personas). - Adds/updates health audit skills and the
health-sweeporchestrator skill to provide the audit inputs and synthesis format. - Adds a Copilot-adapted
Pantheon Quality Sweepskill definition intended to mirror the canonical workflow.
Reviewed changes
Copilot reviewed 22 out of 23 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| src/workflows/quality-sweep/workflow.yaml | Declares workflow configuration (scope, agents, output dirs, phases). |
| src/workflows/quality-sweep/workflow.md | Workflow-level orchestration instructions and phase routing rules. |
| src/workflows/quality-sweep/phases/phase-1-audit.md | Phase 1 audit applicability detection + parallel audit launch + synthesis instructions. |
| src/workflows/quality-sweep/phases/phase-2-triage.md | Phase 2 triage instructions and Track A/Track B classification outputs. |
| src/workflows/quality-sweep/phases/phase-3-quick-fix.md | Phase 3 mechanical fix application + verification + commit gate. |
| src/workflows/quality-sweep/phases/phase-4-plan.md | Phase 4 story + doc-amendment generation and story validation. |
| src/workflows/quality-sweep/phases/phase-5-build.md | Phase 5 batch-stories handoff and build-result reporting. |
| src/workflows/quality-sweep/phases/phase-6-reaudit.md | Phase 6 re-audit execution, score comparison, regression detection, loop gate, final report. |
| src/workflows/quality-sweep/agents/triage-agent.md | Astraea persona for classification and epic clustering. |
| src/workflows/quality-sweep/agents/quick-fixer.md | Hephaestus persona for applying Track A mechanical fixes. |
| src/workflows/quality-sweep/agents/story-architect.md | Daedalus persona for generating BMAD stories from Track B clusters. |
| src/skills/pantheon-quality-sweep/SKILL.md | Copilot-adapted wrapper skill for invoking the quality-sweep workflow. |
| src/skills/pantheon-health-sweep/SKILL.md | Health-sweep orchestrator skill definition for running audits and synthesizing results. |
| src/skills/pantheon-health-audit/SKILL.md | Tech/codebase health audit skill definition. |
| src/skills/pantheon-health-audit-ux/SKILL.md | UX health audit skill definition. |
| src/skills/pantheon-health-audit-data/SKILL.md | Data & privacy health audit skill definition. |
| src/skills/pantheon-health-audit-dx/SKILL.md | Developer experience health audit skill definition. |
| src/skills/pantheon-health-audit-seo/SKILL.md | SEO/web presence health audit skill definition. |
| src/skills/pantheon-health-audit-api/SKILL.md | API surface health audit skill definition. |
| src/skills/pantheon-health-audit-ops/SKILL.md | Ops/deployment readiness audit skill definition. |
| src/skills/pantheon-health-audit-domain/SKILL.md | Domain/business-logic integrity audit skill definition. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+53
to
+61
| FOR EACH audit IN ALL_AUDITS: | ||
| IF audit IN APPLICABLE_AUDITS: | ||
| echo " ✅ {{audit.name}} — {{audit.reason}}" | ||
| ELSE: | ||
| echo " ⬚ {{audit.name}} — not detected" | ||
| echo "" | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
|
|
||
| → Ask user: "Run these {{APPLICABLE_AUDITS.length}} audits? (confirm / add / remove)" |
Comment on lines
+14
to
+41
| epics = JSON.parse(read("{{audit_output.report_dir}}/epics.json")).epics | ||
| triage = JSON.parse(read("{{audit_output.report_dir}}/triage.json")) | ||
| TRACK_B = triage.filter(f => f.track == "B") | ||
|
|
||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
| echo "📐 {{epics.length}} epics loaded with {{TRACK_B.length}} findings" | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
| ``` | ||
|
|
||
| ### 4.2 Check Existing Docs | ||
|
|
||
| ``` | ||
| Task({ | ||
| subagent_type: "general-purpose", | ||
| model: "opus", | ||
| description: "📐 Reviewing existing docs for gaps revealed by audit", | ||
| prompt: ` | ||
| You are reviewing the project's existing documentation against audit findings | ||
| to identify gaps that need amendments. | ||
|
|
||
| <existing_docs> | ||
| PRD: {{read(prd_path) || "No PRD found"}} | ||
| Architecture: {{read(architecture_path) || "No architecture doc found"}} | ||
| </existing_docs> | ||
|
|
||
| <track_b_findings> | ||
| {{JSON.stringify(TRACK_B)}} | ||
| </track_b_findings> |
Comment on lines
+51
to
+69
| # Copy story files to sprint artifacts for batch-stories consumption | ||
| copy(selected_stories, "{{sprint_artifacts}}/") | ||
| ``` | ||
|
|
||
| ### 5.3 Hand Off to Batch-Stories | ||
|
|
||
| ``` | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
| echo "🏗️ Invoking batch-stories workflow" | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
|
|
||
| # Batch-stories handles the full pipeline per story: | ||
| # forge → build → test → verify → assess → refine → commit → reflect | ||
| invoke_workflow("batch-stories", { | ||
| stories: selected_stories, | ||
| source: "quality-sweep", | ||
| tags: ["quality-sweep"], | ||
| commit_prefix: "fix(quality-sweep)" | ||
| }) |
Comment on lines
+177
to
+190
| # Compute grade from score | ||
| grade = IF final_score >= 9.0 THEN "A+" | ||
| ELIF final_score >= 8.5 THEN "A" | ||
| ELIF final_score >= 8.0 THEN "A-" | ||
| ELIF final_score >= 7.5 THEN "B+" | ||
| ELIF final_score >= 7.0 THEN "B" | ||
| ELIF final_score >= 6.5 THEN "B-" | ||
| ELIF final_score >= 6.0 THEN "C+" | ||
| ELIF final_score >= 5.5 THEN "C" | ||
| ELIF final_score >= 5.0 THEN "C-" | ||
| ELSE "D" | ||
|
|
||
| starting_grade = grade_from(baseline.grand_composite) | ||
| final_score = current.grand_composite || baseline.grand_composite |
Comment on lines
+68
to
+89
| #### 1b: Launch Parallel Audits | ||
|
|
||
| Spawn one subagent per applicable audit. Each audit produces: | ||
| - A full report with findings, scores, and severity classifications | ||
| - Output saved to `{{audit_output_dir}}/{{short_name}}-report.md` | ||
|
|
||
| #### 1c: Optional Visual Inspection | ||
|
|
||
| If `visual_inspection` is true and `ux` audit is included: | ||
| 1. Detect and start the dev server. | ||
| 2. Screenshot each route at 3 viewports (desktop 1440x900, tablet 768x1024, mobile 375x812). | ||
| 3. Capture accessibility tree snapshots per page. | ||
| 4. Spot-check key interactive elements for focus visibility, keyboard operability, and screen reader labels. | ||
|
|
||
| #### 1d: Synthesize | ||
|
|
||
| Run a synthesis subagent to: | ||
| 1. **Deduplicate** findings across audits (same file + line + root cause = one finding). | ||
| 2. **Identify systemic themes** (3+ findings sharing the same root pattern). | ||
| 3. **Produce a unified scorecard** with per-audit scores and a grand composite. | ||
| 4. Save `AUDIT-REPORT.md` and `baseline-scores.json`. | ||
|
|
Comment on lines
+42
to
+43
| IF scope.audits: | ||
| APPLICABLE_AUDITS = scope.audits |
Comment on lines
+16
to
+80
| # Always included | ||
| APPLICABLE_AUDITS.push("health-audit") # tech | ||
| APPLICABLE_AUDITS.push("health-audit-dx") # dx | ||
|
|
||
| # Conditional audits — scan codebase for signals | ||
| HAS_FRONTEND = glob("**/*.{jsx,tsx,vue,svelte,html,css,scss}").length > 0 | ||
| HAS_USER_DATA = grep("(form|<input|database|prisma|mongoose|auth|session|cookie)", "**/*.{js,ts,jsx,tsx,py,rb,go}").length > 0 | ||
| HAS_PUBLIC_WEB = file_exists("**/pages/**") OR file_exists("**/app/**/page.*") OR file_exists("**/routes/**") OR grep("(getStaticProps|getServerSideProps|<Route|createBrowserRouter)", "**/*").length > 0 | ||
| HAS_API = grep("(app\\.get|app\\.post|router\\.|@Get|@Post|@Controller|@RestController|GraphQL|schema\\.graphql|openapi|swagger)", "**/*").length > 0 | ||
| HAS_OPS = file_exists("**/Dockerfile") OR file_exists("**/.github/workflows/*") OR file_exists("**/terraform/**") OR file_exists("**/docker-compose*") OR file_exists("**/Jenkinsfile") OR file_exists("**/.gitlab-ci*") | ||
| HAS_DOMAIN = grep("(pricing|permission|rbac|role|workflow|policy|rule_engine|calculate|billing)", "**/*.{js,ts,jsx,tsx,py,rb,go,java}").length > 0 | ||
|
|
||
| IF HAS_FRONTEND: | ||
| APPLICABLE_AUDITS.push("health-audit-ux") # ux | ||
| IF HAS_USER_DATA: | ||
| APPLICABLE_AUDITS.push("health-audit-data") # data | ||
| IF HAS_PUBLIC_WEB: | ||
| APPLICABLE_AUDITS.push("health-audit-seo") # seo | ||
| IF HAS_API: | ||
| APPLICABLE_AUDITS.push("health-audit-api") # api | ||
| IF HAS_OPS: | ||
| APPLICABLE_AUDITS.push("health-audit-ops") # ops | ||
| IF HAS_DOMAIN: | ||
| APPLICABLE_AUDITS.push("health-audit-domain") # domain | ||
|
|
||
| # Override with explicit scope if provided | ||
| IF scope.audits: | ||
| APPLICABLE_AUDITS = scope.audits | ||
| ``` | ||
|
|
||
| ### 1.2 Present Assessment | ||
|
|
||
| ``` | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
| echo "🔍 AUDIT APPLICABILITY ASSESSMENT" | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
| echo "" | ||
| FOR EACH audit IN ALL_AUDITS: | ||
| IF audit IN APPLICABLE_AUDITS: | ||
| echo " ✅ {{audit.name}} — {{audit.reason}}" | ||
| ELSE: | ||
| echo " ⬚ {{audit.name}} — not detected" | ||
| echo "" | ||
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | ||
|
|
||
| → Ask user: "Run these {{APPLICABLE_AUDITS.length}} audits? (confirm / add / remove)" | ||
| ``` | ||
|
|
||
| ### 1.3 Launch Parallel Audits | ||
|
|
||
| ``` | ||
| AUDIT_TASKS = [] | ||
|
|
||
| FOR EACH audit IN APPLICABLE_AUDITS: | ||
| task = Task({ | ||
| subagent_type: "general-purpose", | ||
| model: "opus", | ||
| description: "🔍 Running {{audit.name}} audit", | ||
| prompt: ` | ||
| You are running the {{audit.name}} health audit on this codebase. | ||
| Follow the complete audit skill instructions. | ||
| Produce the full output including all findings, scores, and bar chart. | ||
| Save your complete output to: {{audit_output.report_dir}}/{{audit.short_name}}-report.md | ||
| ` | ||
| }) |
Comment on lines
+23
to
+25
| HAS_PUBLIC_WEB = file_exists("**/pages/**") OR file_exists("**/app/**/page.*") OR file_exists("**/routes/**") OR grep("(getStaticProps|getServerSideProps|<Route|createBrowserRouter)", "**/*").length > 0 | ||
| HAS_API = grep("(app\\.get|app\\.post|router\\.|@Get|@Post|@Controller|@RestController|GraphQL|schema\\.graphql|openapi|swagger)", "**/*").length > 0 | ||
| HAS_OPS = file_exists("**/Dockerfile") OR file_exists("**/.github/workflows/*") OR file_exists("**/terraform/**") OR file_exists("**/docker-compose*") OR file_exists("**/Jenkinsfile") OR file_exists("**/.gitlab-ci*") |
Phase 1: - Define canonical ALL_AUDITS descriptor list (short_name, skill, display_name) so downstream references to .name/.short_name work - Switch file_exists() glob patterns to glob().length > 0 - Handle scope.audits "auto"/"all"/list modes instead of treating any truthy value as an override Phase 4: - Join triage.json classifications back to full finding details from AUDIT-REPORT.md before passing to story generation agents Phase 5: - Align batch-stories handoff to its actual contract: write stories into implementation-artifacts/, register in sprint-status.yaml, invoke via /batch-stories Phase 6: - Compute final_score before deriving grade (was using undefined var) - Define grade_from() helper and use it for both starting and final SKILL.md: - Replace drifted variable names (audit_output_dir, story_output_dir, output_dir) with canonical workflow.yaml paths (audit_output.report_dir, story_settings.output_dir)
Phase 2 triage: - Add steps 2.5 (User Review) and 2.6 (Apply Adjustments) after triage classification, before anything is codified into epics or stories. User can exclude findings, reclassify between tracks, or skip entire epics. Skill visibility: - Mark all 8 individual health audit skills and health-sweep as visibility: internal so they don't appear as standalone slash commands. /quality-sweep is the single user-facing entry point that orchestrates audit selection interactively.
…udit tasks - Replace vague "Follow the complete audit skill instructions" with explicit Skill tool invocation so the orchestrator does not misread the skill name as a subagent_type - Use audit.short_name and audit.display_name in Task description/prompt (audit.name does not exist on the descriptor)
…weep triage Story files were being written to an incorrect /stories/ subfolder in several workflows (plan-to-story, quick-feature, batch-review, quality-sweep). sprint-status.yaml declares story_location at the implementation-artifacts root, not a nested subfolder. Fixed all 5 affected files to use the correct path. Added BMAD context loading to quality-sweep Phase 2 triage so findings are classified as KNOWN (already planned), REGRESSION (completed story with open finding), or UNKNOWN (net-new) before Track A/B assignment. Only reads sprint-status.yaml + epics.md (~20KB) rather than every individual story file. Added misplaced story detection to plan-to-story, quick-feature, and quality-sweep — warns users if stories exist in the legacy /stories/ subfolder and offers to move them to the correct location.
…path - Phase 5: add critical anti-pattern warning against direct implementation agents - Phase 5: add post-wave hardening step via /bmad-pantheon-batch-review - Phase 5: use full skill names (/bmad-pantheon-batch-stories, /bmad-pantheon-batch-review) - workflow.yaml: fix story output_dir to sprint_artifacts (not quality-sweep-stories/) - workflow.md: add DOES NOT rules for direct agents and wrong output directory - workflow.md: document build orchestrator sub-agent pattern
Agents spawned with worktree isolation frequently commit directly to the parent branch instead of their worktree branch. Document the known failure modes and add mitigation rules for orchestrators.
…checkpoints Replace free-text "→ Ask user" prompts with AskUserQuestion across all phases for a better interactive experience. Add detailed finding/story summaries at triage and planning checkpoints so users can evaluate proposed work without requesting more info.
Claude was using Agent({ subagent_type: "bmad-agent-pantheon-builder" })
which fails because Pantheon components are Skills, not agent types.
Made all invocation instructions explicit with Skill() syntax and added
critical warnings in both pipeline and batch-stories skills.
- New phase-0-scope.md: interactive scope selection before auditing - Supports /quality-sweep epic N, story "IDs", area "..." shortcuts - Detects BMAD artifacts and presents numbered epic/story list - Falls back to codebase scan (harden-style numbered area list) - Full sweep option skips scope selection entirely - Codebase map cache moved from .harden/ to .codebase/ for generality - Incremental map updates: re-map only files changed since last commit instead of full remap on threshold breach - phase-1-audit.md reads scope.json and injects focus hint into every audit agent prompt; out-of-scope findings tagged and excluded from scores - workflow.yaml: added phase-0-scope, codebase_map.cache_file config - SKILL.md: documented new scope params and Step 0 procedure
Ports the merge-queue feature from enterprise: - Add phases/merge-queue.md (Charon agent protocol for post-execution branch integration) - Add agents/charon.md (merge orchestrator agent) - Add worktree_config block to workflow.yaml (squash merge, conflict resolution, crash recovery) - Update workflow.md with merge-queue phase (3c), mandatory phase enforcement chain, and renamed Quality Gates to phase 3d - Update execute-parallel.md with BRANCH_MAP construction step and mandatory phase chain - Update plan-parallel.md with FILE_OVERLAP_MATRIX step for merge-order optimization - Update heracles.md with worktree_mode/shared_artifacts params and test parallelism limits - Update AGENT-LIMITATIONS.md with worktree bypass note and test parallelism guidance - Update git-commit-queue.md with worktree mode bypass note
- Fix stale $HARDEN_MAP variable in bash (should be $CODEBASE_MAP) - Drop numeric phase count from Phase 0 header (use "pre-audit" label) - Add Phase 0 summary to workflow.md Phases section - Add scope shortcut invocations to Invocation section - Add scope config docs to Configuration section - Fix QS story detection to check sprint-artifacts/ (not just legacy dir) - Rename scope -> sweep_scope in Phase 1 to avoid collision with workflow.yaml scope
5a91b37 to
50e7acb
Compare
…files CRITICAL: - Fix phase ordering in workflow.yaml (phase-0-scope now before phase-1-audit) HIGH: - Fix audit.name → audit.display_name in phase-1-audit and phase-6-reaudit - Fix confidence tiers in triage-agent (Assertion/Suggestion → Verified/Probable/Observation) - Fix dx listed as conditional in workflow.md (should be always-included) - Fix stale quality-sweep-stories/ reference in workflow.md phase 4 - Add sprint-status.yaml registration step in SKILL.md Step 4 - Add error table entries for synthesis/triage/quick-fixer subagent failures MEDIUM: - Fix visual inspection comparison (string vs object array) in phase-1-audit - Convert phase-2-triage user checkpoint to AskUserQuestion format - Fix step numbering in phase-2-triage (2.0 → 2.1) - Fix model mismatch in phase-3-quick-fix (opus → sonnet) - Standardize story filename pattern to QS-N-slug.md across all files - Fix undefined variable references in agent files - Align severity threshold in triage-agent - Remove Deferred bucket from triage-agent (classified as Track B) - Add scope selector mutual exclusivity and audits interaction clause - Add user confirmation gate after triage - Remove Phase N terminology drift - Add quick_only output template adaptation note - Add visual inspection delegation note - Rewrite canonical source override as self-contained provenance note - Add explicit parameter forwarding in Step 5 - Add dev server failure error table entry - Add concrete file patterns for audit applicability detection - Reframe negative-only constraints with positive alternatives - Expand Copilot context for re-audit agents - Add audit name validation step - Add health-sweep to Related Skills - Add session boundaries note LOW: 14 additional fixes (terminology, voice, constraint framing, etc.)
50e7acb to
69917ff
Compare
Each quality-sweep session now gets its own subdirectory under _bmad-output/quality-sweep/ based on the scope selection: - epic-8/, stories-8-1-8-2/, auth-payments/, full-2026-03-18/ This prevents parallel sessions (e.g., one sweeping "auth" and another sweeping "payments") from clobbering each other's AUDIT-REPORT.md, baseline-scores.json, and per-audit report files. Changes: - Phase 0 generates a scope slug and creates SCOPED_REPORT_DIR - scope.json now includes report_dir pointing to the scoped subdir - All phases (1-6) use SCOPED_REPORT_DIR instead of audit_output.report_dir - Each phase has a fallback preamble that re-derives SCOPED_REPORT_DIR from scope.json if the orchestrator context is lost - Audit agent prompts now explicitly forbid writing to AUDIT-REPORT.md (reserved for synthesis step only)
Add dedicated bmad-auditor agent definition, expand phase-1-audit with detailed audit procedures, update workflow orchestration, and enhance validate workflow with comprehensive validation logic.
857c69b to
40633bd
Compare
…ty schema Remove src/platform/ (superseded by adapter system) and pantheon-pipeline-status skill. Add config.local.example.yaml, security-gate schema, and scan-secrets tool.
Update all pantheon skill definitions to ensure name fields match their directory names for consistent BMAD manifest generation.
Update config_source, installed_path, and output_folder references across all workflow configs for consistent path resolution.
Refine all 7 quality-sweep phases (scope, audit, triage, quick-fix, plan, build, re-audit) with improved scoping, triage logic, and agent coordination.
Improve parallel execution, git commit queue handling, agent limitations docs, and batch-review scope phase.
Add OWASP, encryption, and WAF security policy data files. Update refine and commit phases for improved story lifecycle handling.
Add copilot-compatible skill definitions to workflows that were missing them, enabling cross-platform adapter installation.
Add standalone research workflow with 5-phase pipeline (scope, search,
fetch/verify, analyze, report) using citation integrity and source
verification. Outputs to {output_folder}/research/.
Integrate as conditional Phase 1.5 in quick-feature: when a plan
scores <= 2 on detail, offers web research with a condensed summary
review checkpoint before continuing to PRD generation.
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
New Files (21)
Health Audit Skills (9):
src/skills/pantheon-health-audit/— Codebase & techsrc/skills/pantheon-health-audit-ux/— User experiencesrc/skills/pantheon-health-audit-data/— Data & privacysrc/skills/pantheon-health-audit-dx/— Developer experiencesrc/skills/pantheon-health-audit-seo/— SEO & web presencesrc/skills/pantheon-health-audit-api/— API surface qualitysrc/skills/pantheon-health-audit-ops/— Ops & deploymentsrc/skills/pantheon-health-audit-domain/— Business logic & domainsrc/skills/pantheon-health-sweep/— Parallel orchestratorQuality-Sweep Workflow:
src/workflows/quality-sweep/workflow.yaml— Configsrc/workflows/quality-sweep/workflow.md— Orchestration instructionssrc/workflows/quality-sweep/phases/— 6 phase filessrc/workflows/quality-sweep/agents/— Astraea (triage), Hephaestus (quick-fix), Daedalus (story architect)src/skills/pantheon-quality-sweep/SKILL.md— Portable skill definitionPipeline Integration
Quality-sweep slots in after initial implementation as the "polish and harden" phase, producing measurable score improvements across all quality dimensions.
Test plan
/quality-sweepagainst a test codebase to validate end-to-end flow