@xgent-ai/skills 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -11
- package/bin/xgent-skills.js +269 -9
- package/docs/claude-context-goal-guard.md +125 -0
- package/docs/codex-context-goal-guard.md +110 -0
- package/hooks/claude/context-goal-guard.js +139 -0
- package/hooks/claude/settings.example.json +26 -0
- package/hooks/codex/context-goal-guard.py +189 -0
- package/hooks/codex/hooks.example.json +26 -0
- package/package.json +7 -1
- package/skills/agi-mode/SKILL.md +225 -0
- package/skills/agi-mode/evals/baseline-coverage.md +96 -0
- package/skills/agi-mode/evals/scenarios.md +331 -0
- package/skills/agi-mode/evals/test_check_evidence.py +141 -0
- package/skills/agi-mode/playbooks/arena.md +47 -0
- package/skills/agi-mode/playbooks/authoring-a-skill.md +26 -0
- package/skills/agi-mode/playbooks/autonomous-run.md +39 -0
- package/skills/agi-mode/playbooks/bug-fix.md +27 -0
- package/skills/agi-mode/playbooks/design-prototype.md +41 -0
- package/skills/agi-mode/playbooks/eval.md +72 -0
- package/skills/agi-mode/playbooks/feature.md +26 -0
- package/skills/agi-mode/playbooks/forensics.md +31 -0
- package/skills/agi-mode/playbooks/hillclimb.md +73 -0
- package/skills/agi-mode/playbooks/investigation.md +29 -0
- package/skills/agi-mode/playbooks/migration-refactoring.md +27 -0
- package/skills/agi-mode/playbooks/optimization.md +27 -0
- package/skills/agi-mode/playbooks/pr-lifecycle.md +38 -0
- package/skills/agi-mode/playbooks/program.md +57 -0
- package/skills/agi-mode/playbooks/reflection.md +41 -0
- package/skills/agi-mode/playbooks/resource-cleanup.md +24 -0
- package/skills/agi-mode/playbooks/review.md +27 -0
- package/skills/agi-mode/playbooks/session-handoff.md +37 -0
- package/skills/agi-mode/playbooks/shipping.md +35 -0
- package/skills/agi-mode/playbooks/ui-delivery.md +34 -0
- package/skills/agi-mode/playbooks/unblock.md +54 -0
- package/skills/agi-mode/principles/autonomous-decisions.md +21 -0
- package/skills/agi-mode/principles/behavioral-tests.md +21 -0
- package/skills/agi-mode/principles/boundary-discipline.md +21 -0
- package/skills/agi-mode/principles/bounded-convergence.md +21 -0
- package/skills/agi-mode/principles/build-leverage.md +21 -0
- package/skills/agi-mode/principles/challenge-premises.md +21 -0
- package/skills/agi-mode/principles/complete-migrations.md +21 -0
- package/skills/agi-mode/principles/context-as-state.md +21 -0
- package/skills/agi-mode/principles/critical-path-throughput.md +21 -0
- package/skills/agi-mode/principles/domain-models-and-types.md +23 -0
- package/skills/agi-mode/principles/evidence-lifetime.md +21 -0
- package/skills/agi-mode/principles/experience-first.md +21 -0
- package/skills/agi-mode/principles/explore-alternatives.md +21 -0
- package/skills/agi-mode/principles/falsifiable-verification.md +21 -0
- package/skills/agi-mode/principles/foundations-first.md +21 -0
- package/skills/agi-mode/principles/idempotent-effects.md +21 -0
- package/skills/agi-mode/principles/information-first.md +21 -0
- package/skills/agi-mode/principles/minimize-complexity.md +21 -0
- package/skills/agi-mode/principles/outcome-ownership.md +21 -0
- package/skills/agi-mode/principles/prove-real-outcomes.md +21 -0
- package/skills/agi-mode/principles/redesign-from-constraints.md +21 -0
- package/skills/agi-mode/principles/root-cause.md +21 -0
- package/skills/agi-mode/principles/state-ownership.md +21 -0
- package/skills/agi-mode/principles/structural-learning.md +21 -0
- package/skills/agi-mode/principles/verifiable-units.md +21 -0
- package/skills/agi-mode/references/continuity.md +75 -0
- package/skills/agi-mode/references/eval-protocol.md +71 -0
- package/skills/agi-mode/references/evidence-contract.md +57 -0
- package/skills/agi-mode/references/evolution-evidence.md +71 -0
- package/skills/agi-mode/references/experiments.md +82 -0
- package/skills/agi-mode/references/reflection/divergent-reviewer.md +45 -0
- package/skills/agi-mode/references/reflection/judgment-reviewer.md +44 -0
- package/skills/agi-mode/references/reflection/synthesizer.md +39 -0
- package/skills/agi-mode/references/reflection/tooling-reviewer.md +57 -0
- package/skills/agi-mode/references/skill-evolution.md +50 -0
- package/skills/agi-mode/scripts/check_evidence.py +147 -0
- package/skills/apply-code-review/SKILL.md +53 -0
- package/skills/apply-code-review/agents/openai.yaml +4 -0
- package/skills/apply-code-review/references/record-contract.md +77 -0
- package/skills/apply-doc-review/SKILL.md +79 -0
- package/skills/apply-doc-review/agents/openai.yaml +4 -0
- package/skills/apply-doc-review/references/disposition-contract.md +57 -0
- package/skills/archify/LICENSE +22 -0
- package/skills/archify/SKILL.md +137 -0
- package/skills/archify/THIRD_PARTY_NOTICES.md +69 -0
- package/skills/archify/assets/JetBrainsMono-OFL.txt +93 -0
- package/skills/archify/assets/template.html +14937 -0
- package/skills/archify/bin/archify.mjs +2139 -0
- package/skills/archify/bin/open-artifact.mjs +86 -0
- package/skills/archify/bin/preview.mjs +653 -0
- package/skills/archify/bin/visual-check.mjs +829 -0
- package/skills/archify/brand-marks/README.md +31 -0
- package/skills/archify/brand-marks/catalog.json +131 -0
- package/skills/archify/delta/architecture-delta.mjs +1232 -0
- package/skills/archify/examples/agent-run.lifecycle.json +60 -0
- package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
- package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
- package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
- package/skills/archify/examples/cache-miss-request.sequence.json +82 -0
- package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
- package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
- package/skills/archify/examples/dataflow-product-analytics.html +15048 -0
- package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
- package/skills/archify/examples/event-stream.dataflow.json +57 -0
- package/skills/archify/examples/incident-response.workflow.json +64 -0
- package/skills/archify/examples/lifecycle-agent-run.html +14983 -0
- package/skills/archify/examples/product-analytics.dataflow.json +76 -0
- package/skills/archify/examples/production-deployment.architecture.json +71 -0
- package/skills/archify/examples/release-delivery.workflow.json +62 -0
- package/skills/archify/examples/sequence-cache-miss-request.html +15063 -0
- package/skills/archify/examples/web-app-rendered.html +15012 -0
- package/skills/archify/examples/web-app.architecture.json +46 -0
- package/skills/archify/examples/workflow-agent-tool-call-rendered.html +15054 -0
- package/skills/archify/migrations/workflow-v2.mjs +279 -0
- package/skills/archify/package-lock.json +149 -0
- package/skills/archify/package.json +39 -0
- package/skills/archify/recipes/scenarios.mjs +391 -0
- package/skills/archify/references/authoring-contract.md +247 -0
- package/skills/archify/references/brand-marks.md +65 -0
- package/skills/archify/references/delivery-contract.md +138 -0
- package/skills/archify/references/viewer-runtime.md +45 -0
- package/skills/archify/renderers/architecture/grid.mjs +62 -0
- package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
- package/skills/archify/renderers/dataflow/README.md +104 -0
- package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
- package/skills/archify/renderers/lifecycle/README.md +115 -0
- package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
- package/skills/archify/renderers/sequence/README.md +114 -0
- package/skills/archify/renderers/sequence/render-sequence.mjs +464 -0
- package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
- package/skills/archify/renderers/shared/cli.mjs +218 -0
- package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
- package/skills/archify/renderers/shared/diagnostics.mjs +160 -0
- package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
- package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
- package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
- package/skills/archify/renderers/shared/geometry.mjs +1423 -0
- package/skills/archify/renderers/shared/i18n.mjs +595 -0
- package/skills/archify/renderers/shared/layout-report.mjs +40 -0
- package/skills/archify/renderers/shared/legend.mjs +217 -0
- package/skills/archify/renderers/shared/output-path.mjs +340 -0
- package/skills/archify/renderers/shared/repository-evidence.mjs +239 -0
- package/skills/archify/renderers/shared/repository-location.mjs +58 -0
- package/skills/archify/renderers/shared/text-fit.mjs +49 -0
- package/skills/archify/renderers/shared/utils.mjs +232 -0
- package/skills/archify/renderers/shared/validator.mjs +86 -0
- package/skills/archify/renderers/workflow/README.md +223 -0
- package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
- package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
- package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
- package/skills/archify/schemas/README.md +211 -0
- package/skills/archify/schemas/architecture.schema.json +178 -0
- package/skills/archify/schemas/common.schema.json +115 -0
- package/skills/archify/schemas/dataflow.schema.json +243 -0
- package/skills/archify/schemas/lifecycle.schema.json +266 -0
- package/skills/archify/schemas/sequence.schema.json +223 -0
- package/skills/archify/schemas/workflow.schema.json +428 -0
- package/skills/archify/scripts/check-render-output.mjs +916 -0
- package/skills/archify/scripts/check-update.mjs +1667 -0
- package/skills/archify/scripts/generate-brand-marks.mjs +141 -0
- package/skills/archify/scripts/generate-validators.mjs +66 -0
- package/skills/archify/scripts/render-examples.mjs +26 -0
- package/skills/archify/scripts/update-contract.mjs +182 -0
- package/skills/archify/skill-release.json +10 -0
- package/skills/archify/test/adaptive-reader-layout.test.mjs +86 -0
- package/skills/archify/test/animation.test.mjs +179 -0
- package/skills/archify/test/architecture-compare-recovery.test.mjs +157 -0
- package/skills/archify/test/architecture-delta-markers.test.mjs +137 -0
- package/skills/archify/test/architecture-delta.test.mjs +705 -0
- package/skills/archify/test/artifact-receipt-flush.test.mjs +126 -0
- package/skills/archify/test/authored-reachability.test.mjs +95 -0
- package/skills/archify/test/authoring-safety-contract.test.mjs +54 -0
- package/skills/archify/test/automatic-port-spread.test.mjs +376 -0
- package/skills/archify/test/base-input-compatibility.test.mjs +42 -0
- package/skills/archify/test/brand-marks.test.mjs +678 -0
- package/skills/archify/test/chapter-delta-preview.test.mjs +157 -0
- package/skills/archify/test/chapter-handoff.test.mjs +97 -0
- package/skills/archify/test/chapter-rail.test.mjs +86 -0
- package/skills/archify/test/checkout-line-endings.test.mjs +72 -0
- package/skills/archify/test/ci-scope.test.mjs +59 -0
- package/skills/archify/test/clean-skill-staging.test.mjs +440 -0
- package/skills/archify/test/cli-output-types.test.mjs +201 -0
- package/skills/archify/test/cli.test.mjs +986 -0
- package/skills/archify/test/community-proof-intake.test.mjs +125 -0
- package/skills/archify/test/cursor-onboarding.test.mjs +74 -0
- package/skills/archify/test/degraded.test.mjs +161 -0
- package/skills/archify/test/delivery-contract.test.mjs +52 -0
- package/skills/archify/test/desktop-reader-browser.test.mjs +80 -0
- package/skills/archify/test/diagram-guide.test.mjs +92 -0
- package/skills/archify/test/engineering-profile.test.mjs +209 -0
- package/skills/archify/test/export-browser.test.mjs +305 -0
- package/skills/archify/test/export-cleanup-browser.test.mjs +294 -0
- package/skills/archify/test/finder-browser.test.mjs +274 -0
- package/skills/archify/test/finder.test.mjs +104 -0
- package/skills/archify/test/fixtures/automatic-routing-node-border-clearance.workflow.json +40 -0
- package/skills/archify/test/fixtures/fail-migration-cleanup.mjs +17 -0
- package/skills/archify/test/fixtures/issue-126/custom-widths.workflow.json +18 -0
- package/skills/archify/test/fixtures/issue-126/explicit-route.workflow.json +28 -0
- package/skills/archify/test/fixtures/issue-126/explicit-viewbox.workflow.json +19 -0
- package/skills/archify/test/fixtures/issue-126/labels.workflow.json +18 -0
- package/skills/archify/test/fixtures/v1-baseline/agent-run.lifecycle.json +64 -0
- package/skills/archify/test/fixtures/v1-baseline/agent-tool-call.workflow.json +88 -0
- package/skills/archify/test/fixtures/v1-baseline/cache-miss-request.sequence.json +75 -0
- package/skills/archify/test/fixtures/v1-baseline/event-stream.dataflow.json +57 -0
- package/skills/archify/test/fixtures/v1-baseline/product-analytics.dataflow.json +70 -0
- package/skills/archify/test/fixtures/v1-baseline/production-deployment.architecture.json +71 -0
- package/skills/archify/test/fixtures/v1-baseline/web-app.architecture.json +41 -0
- package/skills/archify/test/fixtures/v1-workflow-700x400.workflow.json +22 -0
- package/skills/archify/test/fixtures/v1-workflow-explicit-coordinates.workflow.json +47 -0
- package/skills/archify/test/focus-browser.test.mjs +226 -0
- package/skills/archify/test/gallery.test.mjs +130 -0
- package/skills/archify/test/generate-validators.test.mjs +59 -0
- package/skills/archify/test/generate-viewer.test.mjs +165 -0
- package/skills/archify/test/generated-artifact-xml.test.mjs +88 -0
- package/skills/archify/test/geometry.test.mjs +739 -0
- package/skills/archify/test/golden.mjs +207 -0
- package/skills/archify/test/grid.test.mjs +47 -0
- package/skills/archify/test/guide-page.test.mjs +85 -0
- package/skills/archify/test/guide.test.mjs +81 -0
- package/skills/archify/test/guided-views-browser.test.mjs +460 -0
- package/skills/archify/test/guided-views.test.mjs +144 -0
- package/skills/archify/test/helpers/desktop-browser.mjs +48 -0
- package/skills/archify/test/helpers/offline-fonts.mjs +76 -0
- package/skills/archify/test/helpers/viewer-click.mjs +72 -0
- package/skills/archify/test/helpers/xml.mjs +37 -0
- package/skills/archify/test/i18n.test.mjs +422 -0
- package/skills/archify/test/intent-trace-browser.test.mjs +284 -0
- package/skills/archify/test/intent-trace.test.mjs +111 -0
- package/skills/archify/test/landing.test.mjs +97 -0
- package/skills/archify/test/layout-rules.test.mjs +1498 -0
- package/skills/archify/test/legend-contract.test.mjs +404 -0
- package/skills/archify/test/motion-governor-browser.test.mjs +342 -0
- package/skills/archify/test/motion-governor.test.mjs +111 -0
- package/skills/archify/test/offline-font-browser.test.mjs +210 -0
- package/skills/archify/test/offline-self-containment.test.mjs +80 -0
- package/skills/archify/test/open-artifact.test.mjs +118 -0
- package/skills/archify/test/ordinary-model-floor.test.mjs +1052 -0
- package/skills/archify/test/output-path.test.mjs +587 -0
- package/skills/archify/test/presentation.test.mjs +71 -0
- package/skills/archify/test/preset-tryon.test.mjs +113 -0
- package/skills/archify/test/preview-contract.test.mjs +40 -0
- package/skills/archify/test/preview.test.mjs +530 -0
- package/skills/archify/test/proof-aperture.test.mjs +78 -0
- package/skills/archify/test/reach-share-card.test.mjs +149 -0
- package/skills/archify/test/reader-layout-browser.test.mjs +320 -0
- package/skills/archify/test/readme-showcase.test.mjs +319 -0
- package/skills/archify/test/real-repository-proof.test.mjs +209 -0
- package/skills/archify/test/relationship-direct-explorer.test.mjs +115 -0
- package/skills/archify/test/relationship-lens.test.mjs +128 -0
- package/skills/archify/test/relationship-permalink.test.mjs +130 -0
- package/skills/archify/test/relationship-pulse.test.mjs +122 -0
- package/skills/archify/test/release-identity.test.mjs +476 -0
- package/skills/archify/test/release-package-gates.test.mjs +750 -0
- package/skills/archify/test/render-output-checks.test.mjs +588 -0
- package/skills/archify/test/renderer-diagnostic-boundary.test.mjs +107 -0
- package/skills/archify/test/repair-receipt.test.mjs +181 -0
- package/skills/archify/test/repository-evidence-replacement.test.mjs +136 -0
- package/skills/archify/test/repository-evidence.test.mjs +605 -0
- package/skills/archify/test/repository-language-metadata.test.mjs +67 -0
- package/skills/archify/test/route-journey.test.mjs +125 -0
- package/skills/archify/test/route-probe-browser.test.mjs +363 -0
- package/skills/archify/test/route-probe.test.mjs +114 -0
- package/skills/archify/test/route-share-card.test.mjs +163 -0
- package/skills/archify/test/semantic-camera.test.mjs +88 -0
- package/skills/archify/test/semantic-flow.test.mjs +90 -0
- package/skills/archify/test/semantic-legend-gateway.test.mjs +156 -0
- package/skills/archify/test/semantic-lens-browser.test.mjs +372 -0
- package/skills/archify/test/semantic-lens.test.mjs +103 -0
- package/skills/archify/test/semantic-passport.test.mjs +99 -0
- package/skills/archify/test/semantic-radar.test.mjs +735 -0
- package/skills/archify/test/semantic-zoom.test.mjs +86 -0
- package/skills/archify/test/sequence-column-fit.test.mjs +137 -0
- package/skills/archify/test/settled-flow.test.mjs +97 -0
- package/skills/archify/test/share-card-export.test.mjs +132 -0
- package/skills/archify/test/site-language-continuity.test.mjs +569 -0
- package/skills/archify/test/site-language-integration.mjs +9 -0
- package/skills/archify/test/skill-metadata.test.mjs +84 -0
- package/skills/archify/test/stable-update-manifest.test.mjs +167 -0
- package/skills/archify/test/start-page.test.mjs +312 -0
- package/skills/archify/test/story-beat-navigator.test.mjs +103 -0
- package/skills/archify/test/story-carrier.test.mjs +90 -0
- package/skills/archify/test/story-director-strip.test.mjs +91 -0
- package/skills/archify/test/story-follow-camera.test.mjs +103 -0
- package/skills/archify/test/story-horizon.test.mjs +91 -0
- package/skills/archify/test/story-moment-link.test.mjs +93 -0
- package/skills/archify/test/story-shelf.test.mjs +84 -0
- package/skills/archify/test/story-trail.test.mjs +81 -0
- package/skills/archify/test/toolbar-polish.test.mjs +57 -0
- package/skills/archify/test/update-contract.test.mjs +133 -0
- package/skills/archify/test/update-notifier.test.mjs +3317 -0
- package/skills/archify/test/v1-compatibility.test.mjs +329 -0
- package/skills/archify/test/vertical-edge.test.mjs +68 -0
- package/skills/archify/test/viewer-camera-browser.test.mjs +395 -0
- package/skills/archify/test/viewer-chrome-layout.test.mjs +1104 -0
- package/skills/archify/test/viewer-identifiers-browser.test.mjs +135 -0
- package/skills/archify/test/visual-check.test.mjs +400 -0
- package/skills/archify/test/webm-artifact.smoke.mjs +1855 -0
- package/skills/archify/test/workflow-compiler-hard-contract.test.mjs +2136 -0
- package/skills/archify/test/workflow-compiler.test.mjs +1163 -0
- package/skills/archify/test/workflow-migration.test.mjs +620 -0
- package/skills/archify/test/workflow-semantic-contract.test.mjs +131 -0
- package/skills/architect/SKILL.md +83 -0
- package/skills/architect/references/design-red-flags.md +33 -0
- package/skills/architect/references/rationale-template.md +35 -0
- package/skills/architect/references/runner-prompt.md +20 -0
- package/skills/arena/SKILL.md +13 -0
- package/skills/automate-me/SKILL.md +104 -0
- package/skills/autoresearch/SKILL.md +14 -0
- package/skills/debugging/SKILL.md +279 -0
- package/skills/dev-plan/SKILL.md +25 -18
- package/skills/dev-plan/references/execution-workflow.md +8 -61
- package/skills/dev-plan/references/plan-skeleton.md +43 -28
- package/skills/dev-plan/scripts/check_progress.sh +5 -1
- package/skills/documentation-writer/SKILL.md +204 -0
- package/skills/documentation-writer/assets/templates/ARCHITECTURE.md +49 -0
- package/skills/documentation-writer/assets/templates/CONCERNS.md +56 -0
- package/skills/documentation-writer/assets/templates/CONVENTIONS.md +52 -0
- package/skills/documentation-writer/assets/templates/FEATURES.md +43 -0
- package/skills/documentation-writer/assets/templates/INTEGRATIONS.md +48 -0
- package/skills/documentation-writer/assets/templates/STACK.md +56 -0
- package/skills/documentation-writer/assets/templates/STRUCTURE.md +44 -0
- package/skills/documentation-writer/assets/templates/TESTING.md +57 -0
- package/skills/documentation-writer/references/api-docs.md +185 -0
- package/skills/documentation-writer/references/architecture.md +134 -0
- package/skills/documentation-writer/references/codebase-map.md +113 -0
- package/skills/documentation-writer/references/inquiry-checkpoints.md +78 -0
- package/skills/documentation-writer/references/readme.md +89 -0
- package/skills/documentation-writer/references/stack-detection.md +134 -0
- package/skills/documentation-writer/references/user-manual.md +103 -0
- package/skills/documentation-writer/references/writing-style.md +220 -0
- package/skills/documentation-writer/scripts/check_doc.py +273 -0
- package/skills/documentation-writer/scripts/scan.py +712 -0
- package/skills/elintp/SKILL.md +27 -1
- package/skills/figure-it-out/SKILL.md +53 -0
- package/skills/gdpr-compliant/SKILL.md +283 -0
- package/skills/gdpr-compliant/references/Security.md +266 -0
- package/skills/gdpr-compliant/references/data-rights.md +177 -0
- package/skills/how/SKILL.md +58 -0
- package/skills/how/references/explainer-prompt.md +55 -0
- package/skills/how/references/explorer-prompt.md +52 -0
- package/skills/humanize-writing/SKILL.md +417 -0
- package/skills/humanize-writing/references/ai-tells.md +291 -0
- package/skills/kpi-dashboard-design/SKILL.md +103 -0
- package/skills/landing-page-conversion-audit/SKILL.md +122 -0
- package/skills/meeting-minutes/SKILL.md +235 -0
- package/skills/portal-app-exchange/SKILL.md +8 -17
- package/skills/portal-dev-setup/SKILL.md +137 -46
- package/skills/portal-dev-setup/puller.env.example +3 -2
- package/skills/portal-dev-setup/references/kafka.md +140 -0
- package/skills/portal-dev-setup/references/troubleshooting.md +22 -26
- package/skills/portal-dev-setup/scripts/onebox.sh +510 -56
- package/skills/portal-external-app/SKILL.md +57 -21
- package/skills/portal-external-app/references/contract-doc-template.md +1 -1
- package/skills/portal-external-app/references/integration-contract.md +4 -4
- package/skills/portal-external-app/references/public-entrypoints.md +100 -0
- package/skills/portal-external-app/references/quota-and-seats.md +12 -31
- package/skills/portal-external-app/references/registration-and-onebox.md +67 -11
- package/skills/portal-micro-app/SKILL.md +18 -28
- package/skills/portal-micro-app/references/manifest-and-acl.md +21 -3
- package/skills/portal-micro-app/references/open-api-and-extensions.md +1 -1
- package/skills/portal-micro-app/references/sdk-reference.md +1 -1
- package/skills/prd/SKILL.md +56 -38
- package/skills/prd/references/prd-skeleton.md +72 -34
- package/skills/prd/references/product-quality.md +89 -0
- package/skills/prd/references/spms-mapping.md +9 -7
- package/skills/react/SKILL.md +26 -4
- package/skills/react/references/actions.md +251 -0
- package/skills/react/references/data-fetching.md +25 -1
- package/skills/react/references/react19-migration.md +407 -0
- package/skills/reflect/SKILL.md +13 -0
- package/skills/review-code/SKILL.md +63 -0
- package/skills/review-code/agents/openai.yaml +4 -0
- package/skills/review-code/references/git-scopes.md +38 -0
- package/skills/review-code/references/report-contract.md +56 -0
- package/skills/review-code/references/review-lenses.md +33 -0
- package/skills/review-dev-plan/SKILL.md +88 -0
- package/skills/review-dev-plan/agents/openai.yaml +4 -0
- package/skills/review-dev-plan/references/report-contract.md +59 -0
- package/skills/review-dev-plan/references/review-lenses.md +82 -0
- package/skills/review-prd/SKILL.md +84 -0
- package/skills/review-prd/agents/openai.yaml +4 -0
- package/skills/review-prd/references/report-contract.md +64 -0
- package/skills/review-prd/references/review-lenses.md +82 -0
- package/skills/review-prd-dev-gaps/SKILL.md +84 -0
- package/skills/review-prd-dev-gaps/agents/openai.yaml +4 -0
- package/skills/review-prd-dev-gaps/references/report-contract.md +72 -0
- package/skills/security-audit/SKILL.md +191 -0
- package/skills/security-audit/references/language-patterns.md +221 -0
- package/skills/security-audit/references/report-format.md +194 -0
- package/skills/security-audit/references/secret-patterns.md +178 -0
- package/skills/security-audit/references/vuln-categories.md +288 -0
- package/skills/security-audit/references/vulnerable-packages.md +111 -0
- package/skills/sql-optimization/SKILL.md +296 -0
- package/skills/summarize/SKILL.md +1 -0
- package/skills/swarm/references/teams/product.md +2 -2
- package/skills/tdd/SKILL.md +42 -0
- package/skills/teach/SKILL.md +21 -0
- package/skills/test-plan/SKILL.md +12 -11
- package/skills/test-plan/references/case-taxonomy.md +3 -2
- package/skills/why/SKILL.md +158 -0
- package/skills/why/references/epistemics.md +144 -0
- package/skills/why/references/investigator-prompt.md +103 -0
- package/skills/why/references/source-playbook.md +17 -0
- package/skills/why/references/sources/code-archaeology.md +88 -0
- package/skills/why/references/sources/databricks.md +70 -0
- package/skills/why/references/sources/datadog.md +99 -0
- package/skills/why/references/sources/incident-postmortem.md +15 -0
- package/skills/why/references/sources/linear.md +48 -0
- package/skills/why/references/sources/notion.md +55 -0
- package/skills/why/references/sources/sentry.md +100 -0
- package/skills/why/references/sources/slack.md +54 -0
- package/skills/why/references/synthesizer-prompt.md +135 -0
- package/skills/xgent-app-release/SKILL.md +97 -28
- package/skills/xgent-app-release/references/build-and-package.md +8 -3
- package/skills/xgent-app-release/references/embed-csp.mjs +126 -0
- package/skills/xgent-app-release/references/frontend-archive.md +67 -0
- package/skills/xgent-app-release/references/public-delivery.md +75 -0
- package/skills/xgent-app-release/references/publish-api.md +62 -56
- package/skills/xgent-app-release/references/troubleshooting.md +18 -2
- package/skills/xgent-app-release/references/verify-preflight.mjs +50 -0
- package/skills/xgent-app-release/scripts/npm-token.mjs +8 -3
- package/skills/xgent-app-release/scripts/preflight.mjs +13 -2
- package/skills/xgent-init/SKILL.md +23 -82
- package/skills/xgent-init/references/external-app-AGENTS.template.md +149 -0
- package/skills/xgent-init/references/fill-guide.md +10 -22
- package/skills/xgent-init/scripts/check-docs.mjs +14 -86
- package/vendor/impeccable/VERSION.json +10 -16
- package/vendor/impeccable/bundle/blobs/{daa2a8ecd874f9f940dfd72aaa329318b06bb9be25515be85fea84c871b637a6 → 00c067253d37cd20a41dbe9c806d6a72cbff983ad1418b3c3e447998f577b9c2} +18 -11
- package/vendor/impeccable/bundle/blobs/{4ce929b8cafd37247ea4c148bbe39a9afe15908d1abf4a8248c5122275d16499 → 00d167d9183c8d0c6c0682055107382e6672bacf7a712de0abc8f157c2cb2210} +3 -2
- package/vendor/impeccable/bundle/blobs/{a9515f6f084d8f51c378eb3cdc6db1f12e06dba2d32fc61b7ee7950fa2586f2e → 016c082dcd2aa8f3c080a757c8ed335c6070a904bd2f39668bb9d3e6f95929c1} +1 -1
- package/vendor/impeccable/bundle/blobs/0221a193d111a9de33a785706a603e55dd974a115f549dbdf74e0f9ec72bde7d +101 -0
- package/vendor/impeccable/bundle/blobs/055c571f2960b8f929d6a8d3806a4d32dfcb9750b3ef8b60adc8930fff34b559 +101 -0
- package/vendor/impeccable/bundle/blobs/{3aa908c18db91d5f31d6bba6402eab6afc4e0b75137f841a86bd012386e0d8e2 → 0605c8729dc638a46798e90ab12486fe3ae3372a869757cfb387a08e23b3c84a} +18 -11
- package/vendor/impeccable/bundle/blobs/{ec58806f16fc7ba29bccef08f2e158cd00be077ce05d45e943a59bd26dc6dc55 → 0648e4e06d01cabc91fa7dc19256ceedeeeea213b9265e9d36b0918370e16fb2} +6 -0
- package/vendor/impeccable/bundle/blobs/06b20bd42e5682a42c5d6fbfaad4c55e66ff9b9d99a604bd31d3545af120fc2d +101 -0
- package/vendor/impeccable/bundle/blobs/{420e2fdee2b7f555d9a37ce348cf62610ddd98f96b1a0a511796ba600881588c → 08346755b13f1a3f7c6fb4e512387884b80467aaeff109fd41f5521d2a95635a} +3 -1
- package/vendor/impeccable/bundle/blobs/{8f651cb1f8cde0acc5cc511b77fddd98558a527f54974698a1650b0fd7e849a7 → 08398fa2d8e2b06b849f1c0f032e1e93b832e9294aed35c1c7f62b938d62ee80} +1 -1
- package/vendor/impeccable/bundle/blobs/087f6715114e901c2ce00b438e75b82fd48978c020a782f3dc361d39eb7198a6 +26 -0
- package/vendor/impeccable/bundle/blobs/{bc7a5128cfed46148396c08798b6b9429406fbe477e84e331a36ee2840b6b776 → 09310582ed23393b171eb99ad4a288cc422ac53c26d76311586ce54c6df77b22} +3 -1
- package/vendor/impeccable/bundle/blobs/{633903ba7cb38ed502448a66691fbf655805786a2f06be67043f12294ad08e86 → 0bc2bc36ca6e74f9f610392f1a4fb8f57b2676238ba1f9c65cd8714f5d27e8a2} +5 -0
- package/vendor/impeccable/bundle/blobs/0c064c9975f25f6eb5cf7911c2eeafd3e695d729f8c86a49a24ff2d76cb3cd94 +63 -0
- package/vendor/impeccable/bundle/blobs/{4a7d8695741e2cd354baada215b06798c050aa7a8e1ca6814f0e395e054d1ab1 → 0ccf57f758eb0d53bc32c5c77156f016e528d20fe2c2740662bf19964dfbb00b} +18 -11
- package/vendor/impeccable/bundle/blobs/0dd1e6ccf053cb80e057caf7bf2fef30fd0197a41d907a1a8d2d2d02f6978674 +63 -0
- package/vendor/impeccable/bundle/blobs/{943b0d7c9ce4f6802d8440a07b2ad3c61cbd1cc00ab63962bab7eea9ca584d20 → 0ed5986d1503399f48c11104df5e523a63be2d6558770ebfbbeb2323ca3f2ad3} +5 -5
- package/vendor/impeccable/bundle/blobs/14c9c9a7816026dd77494d06b8d1777c8d64785126b0c9ac8db5ebd996dfd6b6 +101 -0
- package/vendor/impeccable/bundle/blobs/{54cb270e8826380caefc8c40642a5d973f27df46bfdb762d822541a0c72a9877 → 14ef0ab84c10331f8af6b4124387a3f80b493175a04a3f89200719b4b5aea221} +18 -11
- package/vendor/impeccable/bundle/blobs/{6abbf5979db5cb1d7965bf5f91d589e984843069c587f4d1e63aab135bbace0f → 1547005438784032de3254cb35bff393e8187d7a459d0c20a693d9bfb0b5c1a4} +5 -0
- package/vendor/impeccable/bundle/blobs/162b814ddd1133923b9584bb95f85959e64844c94341d6bf10a81c06ab7cc02c +101 -0
- package/vendor/impeccable/bundle/blobs/16498466a97a5b19a593d5b3f245468c71784bea069d7fc8aa9690db5ac1d968 +29 -0
- package/vendor/impeccable/bundle/blobs/{b31ff29c7a1ea979c6d039f7e8d17007410697ab49536690dca109f0af3f20f8 → 16ba7fca1973c5faf53dd2ca523559129c0fe9e5f8d50b645f527afa78186cd2} +9 -0
- package/vendor/impeccable/bundle/blobs/1725ca4aa546a34770f29191b58bf8dc14957d4258fb9e7d02f7b1c59c412ea4 +63 -0
- package/vendor/impeccable/bundle/blobs/{598bfed550954471ba4d257d46b4d608cd82e4cdbf36d07bf93c5f4a563f7727 → 1898529e994bf0a31ee9ff3f87c343caea3d8a7e0986f404e129fbf89078ade0} +4 -3
- package/vendor/impeccable/bundle/blobs/{6e20041e209e8705d14aa9c4fb8cca3f0d743791de633785e5b46e2dd1ff1a6b → 19b439d7d16e139357459d3874f739ea94dbdffeb2a0e201df1620ed1e40574d} +1 -1
- package/vendor/impeccable/bundle/blobs/{04af9f2d6883fe76f9539d310d9c369052822a24886d2c330ab1e3fe5981c8a1 → 1b289c8c09de9d4442109ada91b1fa3a190e113a310cab7aa26a3633c5df0bb0} +1 -1
- package/vendor/impeccable/bundle/blobs/{eb3213b9c9f4d6b2f153e7b457f13aa131bcf633695229dad4eac39a920bdf38 → 1bb3bdce54386e96e21b5956713a80583e6b3b9d1170f3bb8dec3819fa341bc3} +5 -5
- package/vendor/impeccable/bundle/blobs/{e71d6b97680084a7ccec01844e658cbd2042aec00da0c91bec62a240ad7dcf6a → 1c11cb8ea42536c7a51e197f1aa32198960bb89262da2eaf32e0feb03c70792c} +18 -11
- package/vendor/impeccable/bundle/blobs/{f0c4d0615c7d520dfc2536c01cc7f1f3aab9b60ddc399ba01289fe62edb12370 → 1c6258015ed02c522948f8f1a3b6457395a8f7954497b87c1cd83f1791f9f819} +1 -1
- package/vendor/impeccable/bundle/blobs/{27c4b6c90ad12a186136f9ece9cb1830d4a6e36b11382ab334efc4543f8082de → 1d7145fd5bf65282b2e05cf42faf41766d68e83e2b75f460b3b62d81ada5e5d7} +18 -11
- package/vendor/impeccable/bundle/blobs/{1484a7ae206ab4f0e6262b21afe0f6307a629ed27d28fb7de69536a6800a4883 → 1e2f696760ee55fb154bdcc302c7d7b0fbb807e0308130594bd892dae14dc9ea} +5 -0
- package/vendor/impeccable/bundle/blobs/{6989120346e87907d59cc6d4708dd9dee29227ad583fbefee28935395b68ce34 → 1f6c3a1d7344f44eaa88b6f38334ad7d7b60201709589039a58cee73de486f5d} +1 -1
- package/vendor/impeccable/bundle/blobs/207d443cabe4e6fe1351f91785748957f757bf1e7aeca405433c0329dad46a15 +63 -0
- package/vendor/impeccable/bundle/blobs/{f7916d0113da7a19d4e03c113d5563d181457e44f1646ecab9191cfee5ae776d → 20e2111b3e065e8e8054f715ea3902e64b77886b30d2bddee723558f22942620} +4 -3
- package/vendor/impeccable/bundle/blobs/21e78c8a77badb3f83290cd4577ed3b24bd4dd3b57136d7da75733d4f3ee9ac0 +19 -0
- package/vendor/impeccable/bundle/blobs/{0f83648f6b425225290305bced51eacebacf9bf9bc05e21cdbad46863fbc89ce → 223f08673b267f81d7586f686afe05d7cd7529a8e11ac37d979f95c2ceaae8ce} +1 -1
- package/vendor/impeccable/bundle/blobs/2499b18f26639694344ca95682f47c65494f730cfff88aa9bd2aa83a22e5926d +101 -0
- package/vendor/impeccable/bundle/blobs/{074575671f24cf4298d06f0019f76e94f62e9a6ed205fce05b8e507341e64266 → 26cd88d10f8a14ed0ddb6e6b21e5e2c981f410eac93afa179202c354d7d1c0d5} +3 -1
- package/vendor/impeccable/bundle/blobs/{5f24c5a97b4ffcabc7c432b064cfdd04c7a2ad52f52e765be648dc0aadab8f38 → 275dd1b6e63bbd30d2713227c4f79b880a8bc4e01cc48d392068bb86939d3afa} +1 -1
- package/vendor/impeccable/bundle/blobs/{356cfa0ebf61589cf5d52691d101a69d69256062fe1d11d71d95d41a78289cbd → 28f65b42c1ce9aaea35dc37a51257d7c703bb7f6553ebe3b8ca238a1007251e0} +3 -1
- package/vendor/impeccable/bundle/blobs/{a1dbde501ffabb50f30f28f2de6755b5e91b3d4028292c5a3abd3358106eb457 → 2ac1624b1253f3b6fcf2da54d54293624176539b2e9609a49245e7e46c65ca5f} +5 -0
- package/vendor/impeccable/bundle/blobs/{3895765e9434400dfc1b30e364be002cf499c1718fb2431e65b907c14ae2cb27 → 2b9379cdb329890eebe2384fbaa23f771745f30d8cfc43e180ebd092e69bcd2f} +4 -3
- package/vendor/impeccable/bundle/blobs/{1a9180cec754f8afd354e7cb759750247e97c5bd26d3242ad4c45e315069e8c0 → 2bc5d62463cc83d6417df7b8f4a02b4135e2b1bb654aa7727890662496f86e3d} +5 -0
- package/vendor/impeccable/bundle/blobs/2ce1722bd1a9f366182d9357d629796b1448f7a0126a854df507eb044d891cab +26 -0
- package/vendor/impeccable/bundle/blobs/{e21af575fcc0f1df54ae422bea4dfa1e5211422606908919f6a86e19e0d5c20c → 3149a87bbed84bffe3558d5eaf1dc596b2e84d3c1be290fc7b1c13e481ae0803} +4 -3
- package/vendor/impeccable/bundle/blobs/3253eab02b62efa80abc74a5c85da08f3e2c6c20dff8dec38f4d236cbbfa0f3c +63 -0
- package/vendor/impeccable/bundle/blobs/{38c2e839e130008b6da814ab9c16f3fcbbedfdf721a9638eebd31a9e65341a7a → 37680abf9a8e446619fcd33862718f483d197bf2652f966adca8dc54d2909b9d} +3 -2
- package/vendor/impeccable/bundle/blobs/385a0efe833bd4afe4a257e7159590de0cf1b7fd8f7b213b732f1e537c62dab7 +21 -0
- package/vendor/impeccable/bundle/blobs/{8a1c872773996dfa1c1eb765ac7ed8e8d41f99d4f12f090b4725b694e85eaa62 → 3898bd9b56a042e860a0db4fb4dd81ac81126fa218b604702e2ac0c2287ae09b} +9 -0
- package/vendor/impeccable/bundle/blobs/3b2b60f23fa8ed9d73e721e17142c3933dc5318fa9a251742a76fee890ac81a8 +26 -0
- package/vendor/impeccable/bundle/blobs/3bd55b35c253f7841ca4e6e1a855a4b477d59aa2daf6e61e93fd685caaaff131 +63 -0
- package/vendor/impeccable/bundle/blobs/{dde1b74aeab3d90320e134f0ed0422bef99917dcab4c1749aa1720a2c94f725f → 3bed76a0d528e2d73da8acae4dc63702bdb5baca5ab11600d70e75fc9f2ba90b} +5 -0
- package/vendor/impeccable/bundle/blobs/{9b2fc50c5062073d097140cde85602bba181e325ec6b9eea1bd3da74582acb9d → 3ef9a43006bc68d83bc958fc8401e59f9beb6379048f5ced047747fdad05b895} +5 -5
- package/vendor/impeccable/bundle/blobs/{30e006fdee873bac23edaeadce0371161625e021e3cf442dff4b05bb82297ba1 → 400419aaa20f710e1a7e5ca1fce9e8bc995c4db84053f40cf778d987619e0210} +1 -1
- package/vendor/impeccable/bundle/blobs/40cd6024312a1339aa66801df533afa543e60c36e708f0f9659dd8d558f83dce +63 -0
- package/vendor/impeccable/bundle/blobs/{55e95137b3f9198c1d4dfc425366b82f1ef5f77d602682b2edf91f2ce9296289 → 412dd9a5238aee223397591fe49b3bd27b6b53d649a0e67ed8570f3e199cebb9} +1 -1
- package/vendor/impeccable/bundle/blobs/{181e814c1b9317098b2300c1b02ad0d137b6d82bd1e7e8cc64de4d00b4c50c25 → 41ef23c048ab739f48afdce26a2678d36ee40bcced34ef4b969d1d8ffafca64c} +3 -1
- package/vendor/impeccable/bundle/blobs/{edddeb3fad88adec9a055b1bf9d5c75418cbe97a13b1a7f6765e73249e482563 → 42831c3cd874346d8e7f120808d91e6ed3cda5c3eca6eefd76b126659536bc87} +5 -1
- package/vendor/impeccable/bundle/blobs/{e3c331cc21d9a216e25e08628610ea99c97e150893c3d26e5c0cecc532f26d7b → 43dbfcb7c2e54c9cca9fce66024f17c06a2f2be645547b718b75c8828a463de2} +1 -1
- package/vendor/impeccable/bundle/blobs/4435529820c3fc2eceae8b1ee35c906a34c7612fb860117e896152b45aee0770 +26 -0
- package/vendor/impeccable/bundle/blobs/44a60aedcc350c2d7d501d0f830a31a586a6511a9ff9b4e361cb328bb747339d +101 -0
- package/vendor/impeccable/bundle/blobs/{c6a0ec6c28ae55fe539f0f41a507b1638495afd285d6eb15c00245fc8cc7e7fe → 45dcea8da47cc21f447041daa942cf5d92cddde9a5a02c196cedbd159c829304} +5 -0
- package/vendor/impeccable/bundle/blobs/{015725eeca94f52bffd2132d4cb49bc3eb1ee76e6ac7378c065e629d59f56613 → 4700adf4542874f204c680ebad8317a97bf7169dbc04147082618ab59ce70c7d} +3 -2
- package/vendor/impeccable/bundle/blobs/4777bbeaff2efcd6a2a66b07aacaaf57cd32f3fab1c1da5a0513937fafb48bd1 +63 -0
- package/vendor/impeccable/bundle/blobs/{b6022a8c7200e96b0b55c2ff599a01d64123a2f5fe01557d4ca5192a6e0f0b0c → 484ea165f6d49ecc15b7a5c5623e377f2e203f4dad366df23eae99255ecf4572} +18 -11
- package/vendor/impeccable/bundle/blobs/485774d58dfd5796956024cdd9c12f05e692a3703f70b12a02ab43918885c3fd +101 -0
- package/vendor/impeccable/bundle/blobs/{3bf5d8661351831dbb2195e3b677fea1f128ca319c0589d538b66d9c9d7dddbc → 488da2e7406c6b4b5c92d7bc8cbd370cdaafc82a5f3ab5adbcffb21d1d1c4df4} +3 -1
- package/vendor/impeccable/bundle/blobs/{6f1d52863482fa0f6fff877f0cc8f6dd0b4230d28050b0d267e082776e61a332 → 492a8030d11e2f4908d934bd817bd6d16a3164056c74a7172f60e2cec5ff3055} +5 -0
- package/vendor/impeccable/bundle/blobs/{51e2f8963377f142ebdc9864e0ecc5aa1e5b7d344ed72d0e9d748d2d3d8c71b3 → 4972f28d96897c8dec891f0de7a0d9d51f36030ff780ed9d960241c75413da2b} +5 -5
- package/vendor/impeccable/bundle/blobs/4a6f0386bff78bb42efa285df2919e75209ec336672cf5fff91ba66ffb352eaa +63 -0
- package/vendor/impeccable/bundle/blobs/{12c1afcd15e86d840b89a78c6d17ce6d1b5609bac713d59271c6ab5932975dac → 4e3cc4d0e229ca96dd2e28fb2da0478a7f0bb64e447d07a652c425d8fbc57573} +3 -1
- package/vendor/impeccable/bundle/blobs/4ea8e05d0f88d24f182ad554da84317f90b9730e29fad262143ddf423a1f8645 +26 -0
- package/vendor/impeccable/bundle/blobs/{402656ca6df17bad1cd55ede0a966a7bb5b187cf4f89c517851f9efe7f14c0fd → 50d4b14134fc06daeac0aab6960800f171ef85250d3bcce6f246cf81e824463f} +3 -2
- package/vendor/impeccable/bundle/blobs/{43852ca5917de66704f73f9019d15482bb1efd92f2eefaeeeae23610b4c0c6a0 → 50f3b5714ca3e2c1bcf070003733407935ee050609d3123c2c065489fbc9950b} +5 -0
- package/vendor/impeccable/bundle/blobs/{f597742c8e5562263d3bce725cb55e920d8c2c60223f41a632d523ca30cdd12b → 51032bb883137007127d30189b44b516d0e6140271bf5881da7eca76f8bd282c} +3 -1
- package/vendor/impeccable/bundle/blobs/{13bd27aa8573e6d45d8bbf9f3fc991e4719d28a7e8f709009a4a5a49a227fff3 → 511ecde67e6bd976c9bdfa8d92f0dba359621344f8135c2a5ce5a66b385a4cb5} +5 -0
- package/vendor/impeccable/bundle/blobs/514a27fc9830455828d337cfc2fa95fa86be8e5464501bbabb9aca09a66b40ad +63 -0
- package/vendor/impeccable/bundle/blobs/{78ac93689928a580c2f90242cbaa96dda3fa4e55ff1f1d00e412b2a62ad85232 → 529cb2ace696ec11a86f4b010c9b137acf282072e483932181be1871df2aa690} +18 -11
- package/vendor/impeccable/bundle/blobs/53628d05b7eff0d4f48b95e48fad40266452fe1b42f398bd88dd9328353e0dd8 +101 -0
- package/vendor/impeccable/bundle/blobs/{00023f9e7f2e27604fde978b56510a8f837b76eeadd93221d11adcf4c98f1a10 → 53de37260c4f1c37e467557e9b038faa0f285b056bb2b95f435e0a7d1b69b0de} +3 -2
- package/vendor/impeccable/bundle/blobs/{0dbbef70048cc3ae44e6710ff09992ce14ad049ce8ed519b0ff8a1ddb4633f4e → 5415103ca4422ea1422e23bfe9f9bae181f5d6d6407442f7fba31856ada58d12} +3 -1
- package/vendor/impeccable/bundle/blobs/{af34b8af89edb10e228c0482754423f48238fce816eceb8703b8781c130da54e → 56285b28b0ffe471761c2ad062d3f933ed2346ca1b617f1323a30fed99a1a852} +1 -1
- package/vendor/impeccable/bundle/blobs/{12fefe52d80d25014e5f7e2f9b278275a675653d3d99ae8f0ecf344cdb9abbe6 → 56cc1bba51e6805de370160ce4a9399fef3740571204f13c3c751725870305e5} +3 -1
- package/vendor/impeccable/bundle/blobs/571f5c3bcf01c9b1bd02ab853a54db3f88375c4b8f39dd67d53e983a33e08bb7 +26 -0
- package/vendor/impeccable/bundle/blobs/{5ce02fc8f353d7f659535fb80e453963dc047a07c4396adf098fe010b479e7c0 → 5855d7595b0212bb8d521e0265378d437df8d2343d5f8a30408c3edde0a14d96} +3 -2
- package/vendor/impeccable/bundle/blobs/{2b21f0142ee88a11dbe2593362f5a910718a61062e3a64e7ff936ef1e74fd394 → 5a07d4769a741cd00fdf8c95b943ef072eb12cd0c9e2c2d2622d5fe0a4fa3894} +5 -5
- package/vendor/impeccable/bundle/blobs/{3dd45e1c32db3d3163a96ef198954905807b25cb9a1d206a7d77986f21d27652 → 5a9626fb8c1e9051155c68626fe7c765a55be325113245d44b4991fc3d3b014e} +5 -0
- package/vendor/impeccable/bundle/blobs/{d07e3131cdf3e392e59eaa3e2f59fcb0799d9494df4adfee12a21067fb8365ce → 5e354ae11913d5846faa3681a9ed98b68d1881fbbb1ecebf0769e3010bb0a426} +5 -0
- package/vendor/impeccable/bundle/blobs/{ad389ab12800738b0e5c97618278b7a824654b25990166ec9f389caa5c3386ca → 5e6eea05456108b8766cf354dda998e90b6a5ecca7f15d807e28659ee78c306f} +5 -0
- package/vendor/impeccable/bundle/blobs/{85b9c2d051de94ee9129c58be111946f73035ca62bbd2a3936f4fa48768fe5cf → 634257e766b1fecacd25e27dbfc7e21ef3b440b01e94e92b8b17711018d8a661} +18 -11
- package/vendor/impeccable/bundle/blobs/6428239079f98fd6500e9fd032dd289b52052da7a4364ff357b0a5341b6444db +63 -0
- package/vendor/impeccable/bundle/blobs/{f424dafa190533cd32c0bc3e4131d0c472d58e16bb191eab14f0ae73c2cea917 → 647bab2f5cf6279d58d808f4df05d1ac63c1c86c6df9d13406ae776458653995} +5 -0
- package/vendor/impeccable/bundle/blobs/{8e7bb79db7331b93f99de314dd5599de8587ec0b6c25e26cf1efab25c0777fcb → 6528f2aebe4a425b724de293c8f6dc8a42ca80c7f1ed3039b8b9a813b004956a} +4 -3
- package/vendor/impeccable/bundle/blobs/{89eb0206a0d9308c6c6a7cc01bc4fd8812d2bd34bb9a831988c5d86fac2c60de → 6575a657642ccdab42d0743ceaee06621c77811b4dc4f21c616e28aabf5e28ef} +1 -1
- package/vendor/impeccable/bundle/blobs/66d60356172ccafdd334fca9bf33243c8409216a733dcde0d66a24fd70ee8132 +1 -0
- package/vendor/impeccable/bundle/blobs/{759bab1d8adc071fdde2efcf6e2157aa4026f3c2b4f3c342a8070bf328011616 → 69cad1ae7355825ef320ac9638a1c9675ba9fda01c9a0fa12244cc4a1973e550} +2 -2
- package/vendor/impeccable/bundle/blobs/6d21d8e2729effaecc5b6239dadbcffb1ec8d51e8bdadeb47a39827266a61c5e +26 -0
- package/vendor/impeccable/bundle/blobs/{ff882c59c9aced92338aa194cc99a521ea2f083fd22eef3b1c1225e06bc72f66 → 6d9258a49c0b0583ec255eeb1092554298d5eea676fb9391f5a5a1377c3fd770} +4 -3
- package/vendor/impeccable/bundle/blobs/{68bc52a604731ca024610051fc763f4d78a53eb2a45d35b40a8c0383043baa63 → 6f4dfe968f47302ea64dca0e02f8c6d81497d93e4f436d09236e305456cbcc02} +4 -3
- package/vendor/impeccable/bundle/blobs/{f97a6891c80bbbc728edefcf4b638d1a823b38f3cb16ecd0fbb717734cc5c0c8 → 6f7f1639a933ed88e116aa8ab0cfb951096930d14f413349ae22ed04e28d2358} +5 -5
- package/vendor/impeccable/bundle/blobs/713a942482531ef8ef103adf48d9decd7327697450e444289aa0479458e4ee1f +101 -0
- package/vendor/impeccable/bundle/blobs/{6d47503587ad6da17ac529f44a96123bbb96a9c91a7a9350b7690fc467561a5d → 7212014fb2477d1d54aedaa79cdb861071a58afb2ae6d4dc5a495fa4810c6f8a} +5 -5
- package/vendor/impeccable/bundle/blobs/{21bc91f6e07691e82b7bba99f9e1d956f9d7a6810dcdc18d231fe73b53a13b23 → 73f8bdec7d9a97476fd7d7e0b4114b5c3e9c7b84c22cbb876cd18c3e64a9b8c5} +5 -0
- package/vendor/impeccable/bundle/blobs/{a8547c8565979894f0c07f92a96ac2a38e681a31fbf155ffeefc7566e185d9c2 → 754e9f0aa2101245a83cb17d8cc5bc49cf87997b29a83dedbfff283dbd0a8c4f} +5 -0
- package/vendor/impeccable/bundle/blobs/{84df879a0332a56ece4bff1922ecf4f50635951b3c67e67eb46f31bc5d30fa9a → 765d3e890cd7f58ca94b6834181052166e9c4f9ef06278dc241da4d64da2d595} +3 -1
- package/vendor/impeccable/bundle/blobs/778cedc9199b407d3e23fa1041e38d548b00b1101a33517aa2a2eb299f9d0edc +26 -0
- package/vendor/impeccable/bundle/blobs/{ef0b8eca20e1321cf7216fd0bda41ce54b0cca197cfd1b075eb51f3436f59059 → 77ae09542fbc10aa4e8b119d6fd19359908a47c13c30068d6a150bfdb50e3e10} +1 -1
- package/vendor/impeccable/bundle/blobs/{15b4837dccb27d7382e2f134ef050b244c4488b1906e0308f288112183cc09ac → 796bbd8231413fcbf22eb7e6f40c402842aa4b10b1894545a7b05d9201ca7c4a} +18 -11
- package/vendor/impeccable/bundle/blobs/{5e3616ac45568f239fda3a4764f7d3bf3473b8b5eefd91e402dd9208a4b851d1 → 7af7fcc09c6b14f26ba78734460a2f9dddd2dcd2e2fa0c47c682f539e2f4cad5} +1 -1
- package/vendor/impeccable/bundle/blobs/7b1a4cc5ce94837c8309962a204c47361927e442b7a1c3cc472f90276eca8b8c +63 -0
- package/vendor/impeccable/bundle/blobs/7c417abe75f0ce4341b6f5acbadcafbbeabcc32cdb13c930aecc5cabda9f9242 +26 -0
- package/vendor/impeccable/bundle/blobs/7e36403ed58e0e82c0e42bf2fbea1c066b8e63276978647a6f1e44bf1edb23fb +63 -0
- package/vendor/impeccable/bundle/blobs/80191b3580a996a2045105976f728e0f46de22c412fc7640741add9767b2d8f4 +101 -0
- package/vendor/impeccable/bundle/blobs/814610dee1081abc4213476ff0c4ae3e8f457909550d250ea0f89953687c85c6 +63 -0
- package/vendor/impeccable/bundle/blobs/8157b5a376e46980117f1ad6d08b24ee7be966f5de64b041bd213d486ea8c077 +26 -0
- package/vendor/impeccable/bundle/blobs/{bad9250670c18d89722563fd747bae4c4bec64d1db0ee09d12d4fea04fe271b8 → 8373668da1aa37c39888809ed9e834a7edfcb884af12f74934c270d004fba626} +3 -2
- package/vendor/impeccable/bundle/blobs/{46250caaec1bd69619a5b28a73cb3c845b319d029b0af9228aaa7001e7e0104a → 83d614fec61078175383012a088f49a9c0bb08b9ebd2b651c77cb94a323474ab} +5 -0
- package/vendor/impeccable/bundle/blobs/{a5371492582dbeb69b24a1a2947b256a2da8a4d55917af709bbab6e452d9d23c → 8449781319a33d4a10a7fab9bfa4812241c303b95f33703b300b097dba51089a} +18 -11
- package/vendor/impeccable/bundle/blobs/{12d2a8043ae8668ad29c32bfa92995849fc49cb016e6ebd4f7e59539d96e7b03 → 857c4a0db5859f1fa91152db684528299dfc552525f50f416d1625a270e12671} +5 -5
- package/vendor/impeccable/bundle/blobs/{bead87679caad7c537dd7c04c3bb78be56ac7eec279ad6aad7322f48ff2df2d9 → 871a8e4d749b807c693ebabd83defbd6c76e1bd2a0f53a28a460cb1308ba8634} +6 -0
- package/vendor/impeccable/bundle/blobs/{cf3ae16765e7b5bc333ef76e24ab37f080e3d62e931c4986158e3cbcda6b9f7a → 881a58aadf300bcc8f4947243e82192ae8dd7f14822a70fabc84fc74a5f9199c} +5 -5
- package/vendor/impeccable/bundle/blobs/{896da399bafcffb0623bdd81bb18709d6eab25c9d5917e739c8798f31ff0d076 → 88549c11ea55d5dfc9f551db9a9c270d7362a9d42aa83db7747c9a7f020e1255} +5 -5
- package/vendor/impeccable/bundle/blobs/9287af96048c58ed0e72493cf7eb90c3957d4ba8b19e70ecf5d1f54264e9e597 +101 -0
- package/vendor/impeccable/bundle/blobs/92b7ab84c828fa888f4882c417c3d7f8fde2e5445b40f96f4fc8181a3e058afc +101 -0
- package/vendor/impeccable/bundle/blobs/{e2f98c4136d0ab70ec32fcdef58edb20ed8ec4f6cc067e0dae952b22cfd6a471 → 93c53421c3376f695fe9dad5c82102f74bb5dd15e4ced81bb4ad50a71e5f1027} +1 -1
- package/vendor/impeccable/bundle/blobs/{a8f4056a85706c0c8f80ec48e9b437e198464100aa42786f9252051f4b931c19 → 95f0c7935a6d0375e09ae67ae0066c0ce7b583bf1d445d268cc4d2f4f900b1bb} +3 -1
- package/vendor/impeccable/bundle/blobs/98384b78af087855dbb526ec1e870a676ecd87f57237643dfea815317dad8a07 +26 -0
- package/vendor/impeccable/bundle/blobs/{948326fab89f0d5c07355a06b9b9c30d08bba2e3a673a0151ebbf5a39dff7b9a → 99e4a6facdb07986aa721bda8a4e35466b30091f32e38d7a71d9fcbe3591f65a} +5 -0
- package/vendor/impeccable/bundle/blobs/{44a91b3f0810f43829d8584e912812444d15614e4b57ca8070aee7ab899f7c1e → 9a4aa0d4903eabee987fdc92053466ff7f6eb0604797aee0efe67d67999b3eae} +5 -5
- package/vendor/impeccable/bundle/blobs/{9b85b85443aec09918befb83208c72f475457db8261a8fc5e83ef7eec474c869 → 9d45e5f6c082de6df4a2cfff11deb969715c49b5d9891d100dd1b2252c5bdcdd} +18 -11
- package/vendor/impeccable/bundle/blobs/9db3c0857f4c2c8877b1fe24a47a229fee0de76ec9057bd8ee95f0677fb58d74 +26 -0
- package/vendor/impeccable/bundle/blobs/{5738bcf9ac21dbb2113fd0c5cc7e4bbfc8174778916ab5843644332b3dbbc36e → 9e82126a2e08aa365f9c430d383cf6e1921e04d1e0a1b5777716ff97828cfad8} +5 -5
- package/vendor/impeccable/bundle/blobs/{b3782f2d9215eb0f5df4fe3c0e0bec07cef011e1836d4d0e45ef02bc48d3adde → 9f2993499adadfdef4065a9a7fb69c75f888d892d4ee6bdbe62619bc772f495c} +1 -1
- package/vendor/impeccable/bundle/blobs/{1c804990fd8ac23a4b19c42972b5ae591d17f620d0006f0f32927c8db5d5bf50 → a1af8b8a97665a3692eb39872c235796684a387a0b83785872f81aebd9dab046} +18 -11
- package/vendor/impeccable/bundle/blobs/{824b994782a1fe68a244bbdff7218a2e0854655d90cc0fb5ade7ef9259ba6305 → a27399e3056c77a28ddd310fb5b4dee6e8e440dfa1737f7e38815097bec4c3a9} +5 -5
- package/vendor/impeccable/bundle/blobs/a569989e6a3d6453b4c45e9474e162a15cc54e11732ac6baa7990a6e7cccc0b5 +21 -0
- package/vendor/impeccable/bundle/blobs/a75b892696469e3ccd2af33c9eef793e635efc3c5ac45336b0c1373d90c856b0 +63 -0
- package/vendor/impeccable/bundle/blobs/{3ba92d4aa840ec1b6c2fda224339489d6dd65eedf43bb45836af02584d1faa88 → a7e8e60df83c6f47590467094ab2a13f1fe28ce45959a4e69dd89575a4208646} +5 -0
- package/vendor/impeccable/bundle/blobs/{e49d2b0110c55751da3c965b4ae4d294aa676c961a09f8efbbbf22c1ec7c4fa0 → a892e337eee548d53252abb72ba5aa85cbcf556ffd8dc74e05534652c010d574} +1 -1
- package/vendor/impeccable/bundle/blobs/{8f0867db7c6f6a54348a0d951f198a1bd852cd12505d821e6e1ac6bd42e7fcea → a93397adc906e245c69b42d4b25931fc92dc75baa60ca9a3749ba23b52ba01a0} +3 -2
- package/vendor/impeccable/bundle/blobs/{424b2e75cb204e2dca7db4a40dfe5a81f78dc0fc58ac4790e8b7bbf2f330bba4 → a9e63b2df611805e845e0bb1cca1a0c27e83640a78185c9fd9de90d53a539cdc} +5 -0
- package/vendor/impeccable/bundle/blobs/ab80e6a971baa66342548a846ce3fb69824ef9ef4e0f26c6f02685f225d00bbd +26 -0
- package/vendor/impeccable/bundle/blobs/af35b5fb6e45acb6483a5fbb864c3eaa9c57bacc43857f48183c836041c670ae +101 -0
- package/vendor/impeccable/bundle/blobs/af5842c4844b692b817319d5375611d4211dc7f459fb12da358baefc3a6cd373 +63 -0
- package/vendor/impeccable/bundle/blobs/b2732083f8f1d1924d38f84f179491430aebda8e0fd1f1d0785e3f883bcf3a40 +63 -0
- package/vendor/impeccable/bundle/blobs/b3b1d5a4c80ce279d88896601deee9ccfeacdae0d0cd433600985a5f7ac93c72 +26 -0
- package/vendor/impeccable/bundle/blobs/{fd5579dbae1fc2495b7dddde48df9673acebd27953bbb56d506d3b470375c9e9 → b4be5499f404a926cdd2c55d8fb7409ba74a56b3d0c7d865594cc0254d3e499a} +5 -0
- package/vendor/impeccable/bundle/blobs/{2fd096823e4a93f19edd421a69e10f90ebb630a014c673d1802a927c6f47b7d2 → b626e0677288a1660e9ce80c4f0454b527010239681f6b8dcc0f36b4a4d6bcb2} +3 -1
- package/vendor/impeccable/bundle/blobs/{33b6b32c0c3c0c4a2b22bd2275176b1c88a006dd94592a854f629911a0b21cdc → b719be9c5d4ced5d649ec6c0c90630196e7ee513d0da482aef13c705fdc23ab6} +3 -1
- package/vendor/impeccable/bundle/blobs/{df0eb9e9a484fc7b8a0f3e50573a7d7f81e0f17598ac30d9f3fe5a6c6aa5fefa → b8938fea3399aa639b4c873248035c219658069eef7be62672254e2f72c056f4} +5 -0
- package/vendor/impeccable/bundle/blobs/{ee0a15fcfc244b76b896a2650a17b35e444d4311166b69a3cfa32d11f8f44851 → ba0d96d88ab40fad1cb522e60b11affc568cfe9d340110ac5e71f834ac3d0f4a} +12 -0
- package/vendor/impeccable/bundle/blobs/{426c7f5437dd3c23a4cfaef6964dc7f1e038480f92238499b85f3ce7e4472bf4 → bc48bca63dff44e1f0205bafb64e16b2d6fb294ace405dbc9ae06a3bc6107154} +3 -1
- package/vendor/impeccable/bundle/blobs/{c3ad2a5fa570876af6645c48d246c664859e19f253d2dc9e0ead34e785d5b40a → bdd676c8f29295addfdbceaab285bb1184ec3ef7ff60501908b97ea8269580c4} +3 -2
- package/vendor/impeccable/bundle/blobs/{38d4d404030c6ea935d3223db1eeb22c45d04a94f41f98e02a43cdc5af7ff2e3 → c06effcdc60859157208d3b7ee23d56160f2386f6a2dfa2514ba82fe21828ae0} +1 -1
- package/vendor/impeccable/bundle/blobs/c100b67a4ae248ad564182b181acb1ee2fe64c00049aeef62d4e7a3213726f37 +26 -0
- package/vendor/impeccable/bundle/blobs/c2dfc965319745c403b99e00e9e97de15f1300ea721bd3f708f0ac47aadc537b +101 -0
- package/vendor/impeccable/bundle/blobs/{e9da72a13eb3411d6bbb316953022f62abc4434f505e5345907b216eda9f793b → c6b3bc811eb23d90ff9add1e0e5b40999a0bbbab364f5e6d08061f36d30429a5} +1 -1
- package/vendor/impeccable/bundle/blobs/{82a5e564563333aabb7ab4d2f8c26c785dfe2c2416ac6e9f30cba31440676194 → cdf8a88b9865599c58fe285041d2d46eea7d9bd2d4075d82de358191742b20ad} +5 -5
- package/vendor/impeccable/bundle/blobs/cf3d3a296890ac1ee363fee930f252e20d0935cd575367ad017b3cdc2dc5a50d +26 -0
- package/vendor/impeccable/bundle/blobs/{a1e4febca3455787d7c753fe177a150dccde6e742957de400b0307247802d200 → d2e16da9bb6b33c931378d1bf57dcfff5dc426a71434bc352cec6aece715a66f} +18 -11
- package/vendor/impeccable/bundle/blobs/{c36f6aac0ddf52eabbb21df09fd3310540dca6b09e7a4017d18e94c06c469405 → d4a9e18a879bbb92aa0a56e16b45481090dffa4470efdecf52fb0da8c900be5d} +5 -5
- package/vendor/impeccable/bundle/blobs/{869fa5390b84bfd00d072f5280a9002ea3e3936edf5985241be641a87f03ff7b → d57c3e0453f601ad688911fca4471057c7b46b561fcd42a1e12a581101c5186c} +1 -1
- package/vendor/impeccable/bundle/blobs/{910461b1c1f8216155165955c860a884a1e2f557cb38f21ef512ea90ef6503c2 → d5f83912eda93d42f93522bb74aeff0ea04d9c559577ec52fcccc130dd03166d} +2 -1
- package/vendor/impeccable/bundle/blobs/{9deb14303b421b5a9232755b5b9f317716f33e1e211557a98a00a9c409775c4d → d6489d7f3e607ce3f8514a7a7d3a0eb5e8f1ac55859eaf7d5c31b53de8fab9f3} +18 -11
- package/vendor/impeccable/bundle/blobs/{37080ea5e5b381adb7eae7a427231b0ad0dee0f0916fc1d6b673b7101a5b425b → d6a51f4df6d76f16b95ab81268a689f4c5936d505c5bb25c80ad7423f927bbc6} +5 -0
- package/vendor/impeccable/bundle/blobs/{61c72fdde649bf7f2e0668e48f9d222666c81672100b5f2265940e7aa13c8767 → d7b99a57652cb8741d57a15ba7e06de4707fac02a97e5e001179da007272f2b8} +3 -1
- package/vendor/impeccable/bundle/blobs/{57402ef6fd9d0745f8c60d778f77da83a8b16edf751fa1013598a0f6e5f0f541 → d9963fd73bf6129fe0c8ec25c5148f50617ec85683b8eeae7e411c9a42e2db33} +2 -1
- package/vendor/impeccable/bundle/blobs/{581409ace104a81744b7d08f5398a2c207cf76d9e50751f807b4382eaf66454f → da3b2399814db89d67959268c646601957d3e8c641b09a5bdbce84217c1c2cfe} +5 -5
- package/vendor/impeccable/bundle/blobs/{249f0437a52ab3eb4bc4d4a9f38e085334c0fbb7795e88dd419e32b5f58c924d → dc3aeccbea3e997704ce8b170f56b0eaf343a14ad4fedb22a6dbee0f205aa37f} +5 -0
- package/vendor/impeccable/bundle/blobs/{433a79eee3ce4c99e79a7aebe3a6d8ec9ff70216772e0c2ff9dce3a01d672963 → dcc1572e739cdabcbf084f276b447cb686aa18459896e6d8fe29f4d7d807bd1d} +5 -5
- package/vendor/impeccable/bundle/blobs/{2d7086992c07df1fc734cdf9c420c4bd8ad409ab7909e07c8b486c303d420732 → dd66761b291c7dbca6e9efd22023e38f8c53ad310f3a6cdab5dc7ecd7ae8f31f} +3 -2
- package/vendor/impeccable/bundle/blobs/dd953992625c240fd1842aaf533a865aabd09487cbc16fa01fe8bb4b4365b843 +101 -0
- package/vendor/impeccable/bundle/blobs/{df4f14df1daaad1606b682995f649da19a85debf264092447b3b7ddb8b4bc1ce → de70398719140e4951aa111e9625de5ed916ad1ef0877e4ab6f6b4a7e3cc5f8f} +18 -11
- package/vendor/impeccable/bundle/blobs/{8b23562ccc3e41609ce6e67fdad6cc57b6c961964c329eff6975a1b4c5471c0d → deaaa533475b6a9f7dd52e01a1f1997aa3af146694334981650f8c846f939559} +3 -1
- package/vendor/impeccable/bundle/blobs/{041535231366047a0beeb5daa64ea9c23d5a566580f7dafdb8c0623cb4a7e76b → e07176229b8a330970ca3c9c5e3dd68c2aaeb726285e30f471e91053d7f8e798} +1 -1
- package/vendor/impeccable/bundle/blobs/{115e1c3f1b58b5129910ed925dbf65d61d5ac4c2036618847555ce40098aae97 → e1075ea5b34ac9c60f7c5bda97356eeaf1b683b599592d324fd3704f0852ad7a} +18 -11
- package/vendor/impeccable/bundle/blobs/e3af212117e0c552b0976687200fe8f95846a01725a482e8e4dbfd75e40dbfa6 +26 -0
- package/vendor/impeccable/bundle/blobs/e3c2031978cd670d7150ff3140f12cf8b6882ef638ea9a9985caffa9a80c8713 +63 -0
- package/vendor/impeccable/bundle/blobs/e6e18e7c23cfe82961d90b9714cb466c20bd83f222ac63e9339b6b2c304e1787 +26 -0
- package/vendor/impeccable/bundle/blobs/e7af7ad18b307a3171fcf49421df2a557f93289d27af2430f10ee74e2a2fc2d3 +101 -0
- package/vendor/impeccable/bundle/blobs/{b161198874e4e77599bc31691e78790be14bacc2eb03be168c8a7543ece9fbe1 → e85da3098368807689009184eca2bb09a91bdb6cb1be3e7a61f91f1ae31cd69b} +18 -11
- package/vendor/impeccable/bundle/blobs/{6bdbc3f745ceee15e10b050f109ce42bbeb53ab3c3b5239257de1d596654dee7 → e8720f3aa41135211cc58cc299a39eeda86c75651f4279cc1ede8db10dcc0584} +4 -0
- package/vendor/impeccable/bundle/blobs/e9861052457cc1ddc42c687bb8c33a877834ced94fed74af2a4f00f6bae50795 +101 -0
- package/vendor/impeccable/bundle/blobs/{d1faa55eb956033d28e9f27fd2bc2a9f62c5da0f0abd6534819cc0a04db54d9d → eb3e86876c20f1cfc443dcbe48d8f41fea6e815082a304610be432272429a06d} +5 -0
- package/vendor/impeccable/bundle/blobs/{0e1819750e5448311a051d35ab6d0be0830418f78ca872ef10469fafebb27d4f → eba472f6190541c28e2e647ed019f43564ba5b92d629963f34c899175b25b31e} +5 -5
- package/vendor/impeccable/bundle/blobs/{f173ff03f989f162cee815feb2d8ca72daf00019c48694d89db16d52171a79c0 → eba609589a5a051643a7bae60b7cceef7cfe44d0f8bd9229e61473ac75910fb3} +1 -1
- package/vendor/impeccable/bundle/blobs/{8eb466778023fccea641654d662157b123eeb360f4a0875bf6fbe3d93680851c → ec81b008d2641402e3352b09b1a90562ef7a24598d7c5aded475038cce63aca0} +1 -1
- package/vendor/impeccable/bundle/blobs/{4acfb9e38f6e09f7484e36fc19704d69eab159436ee9329168be74c493042f22 → ec86b8633fbeb14ef2272f220fdd98089972b03b99da83e49eeb6a8b73b00617} +3 -1
- package/vendor/impeccable/bundle/blobs/{d15a2914d93e07a4956acd5c8b8211af17380f527acd10d8acf4f4920badaaaf → ef2e97cd690baf6fe5c895dd2d8844aff9fcc4a8bc04973402678a739c81d712} +4 -3
- package/vendor/impeccable/bundle/blobs/f0fbe529f63961a027bada2e6a3cbe86f4af0dba4b8e1010da22b007f9002f66 +63 -0
- package/vendor/impeccable/bundle/blobs/{c02feba25a961a72647ad317aba2d65baeeed53c4cdcc072f25bb37f4d867d43 → f254d59ff973e907cacdc2c34b8b4de075437d292de31dac30e10a9d7035086c} +3 -2
- package/vendor/impeccable/bundle/blobs/f5efb1b1dd4cd18e1d4789d7c8e0188f4342b25fffd53af6088ba8b67774fb99 +26 -0
- package/vendor/impeccable/bundle/blobs/{7af0a8665057c83b39bca2c8c7427ef2343734f70d4128c377113a6726a1e3b1 → f68a3d68ac92606e91aa8878e003d9432ddd09aa97ca01c6b3ce46c937dca316} +524 -4
- package/vendor/impeccable/bundle/blobs/{381ff89aa76e82a0d98456ec31cb117555ae045539fba47c45056daa50f611ca → f84b653ede0804d21e6210c6d21fd5352023914fedceae6ff14e20f1e93b06e7} +5 -5
- package/vendor/impeccable/bundle/blobs/{5b30a06646ad5e453d6b5ed1b8d446f69fca3cd13b8aeda28f0d0b2cbe8f62d1 → fb32d99751c5fc24493ff4460be1767bd5236dc820fd337775067c0620d1a7a6} +3 -1
- package/vendor/impeccable/bundle/blobs/{733504a70ed20bcfca9c26c353f7b88f8491d24f3f2fe124dc1e73b28eefa296 → fb5fec24adafa48df43eece6907c1c986a4772cbdc64142c881f00c3b312e9ca} +18 -11
- package/vendor/impeccable/bundle/blobs/fc149b5bc7a8d0cc9b9bf86e5013793f3857c1c302212e9aaf101cb95427386b +101 -0
- package/vendor/impeccable/bundle/manifest.json +413 -298
- package/skills/grafton-view-dev/SKILL.md +0 -195
- package/skills/grafton-view-dev/references/bindings.md +0 -120
- package/skills/grafton-view-dev/references/components.md +0 -168
- package/skills/grafton-view-dev/references/recipes.md +0 -208
- package/skills/grafton-view-dev/references/schema.md +0 -86
- package/skills/grafton-view-dev/references/stores.md +0 -310
- package/skills/portal-backend-app/SKILL.md +0 -56
- package/skills/portal-backend-app/references/gate-and-tokens.md +0 -93
- package/skills/portal-backend-app/references/wiring-and-conventions.md +0 -71
- package/skills/xgent-init/references/external-app-CLAUDE.template.md +0 -249
- package/vendor/impeccable/bundle/blobs/800cf1c0392b24de7c0a1c6ea6778ecb433dec71c49a150bce96a98477527b2f +0 -1
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sql-optimization
|
|
3
|
+
description: 'Universal SQL performance optimization assistant for comprehensive query tuning, indexing strategies, and database performance analysis across all SQL databases (MySQL, PostgreSQL, SQL Server, Oracle). Provides execution plan analysis, pagination optimization, batch operations, and performance monitoring guidance.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SQL Performance Optimization Assistant
|
|
7
|
+
|
|
8
|
+
Expert SQL performance optimization for ${selection} (or entire project if no selection). Focus on universal SQL optimization techniques that work across MySQL, PostgreSQL, SQL Server, Oracle, and other SQL databases.
|
|
9
|
+
|
|
10
|
+
## 🎯 Core Optimization Areas
|
|
11
|
+
|
|
12
|
+
### Query Performance Analysis
|
|
13
|
+
```sql
|
|
14
|
+
-- ❌ BAD: Inefficient query patterns
|
|
15
|
+
SELECT * FROM orders o
|
|
16
|
+
WHERE YEAR(o.created_at) = 2024
|
|
17
|
+
AND o.customer_id IN (
|
|
18
|
+
SELECT c.id FROM customers c WHERE c.status = 'active'
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
-- ✅ GOOD: Optimized query with proper indexing hints
|
|
22
|
+
SELECT o.id, o.customer_id, o.total_amount, o.created_at
|
|
23
|
+
FROM orders o
|
|
24
|
+
INNER JOIN customers c ON o.customer_id = c.id
|
|
25
|
+
WHERE o.created_at >= '2024-01-01'
|
|
26
|
+
AND o.created_at < '2025-01-01'
|
|
27
|
+
AND c.status = 'active';
|
|
28
|
+
|
|
29
|
+
-- Required indexes:
|
|
30
|
+
-- CREATE INDEX idx_orders_created_at ON orders(created_at);
|
|
31
|
+
-- CREATE INDEX idx_customers_status ON customers(status);
|
|
32
|
+
-- CREATE INDEX idx_orders_customer_id ON orders(customer_id);
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Index Strategy Optimization
|
|
36
|
+
```sql
|
|
37
|
+
-- ❌ BAD: Poor indexing strategy
|
|
38
|
+
CREATE INDEX idx_user_data ON users(email, first_name, last_name, created_at);
|
|
39
|
+
|
|
40
|
+
-- ✅ GOOD: Optimized composite indexing
|
|
41
|
+
-- For queries filtering by email first, then sorting by created_at
|
|
42
|
+
CREATE INDEX idx_users_email_created ON users(email, created_at);
|
|
43
|
+
|
|
44
|
+
-- For full-text name searches
|
|
45
|
+
CREATE INDEX idx_users_name ON users(last_name, first_name);
|
|
46
|
+
|
|
47
|
+
-- For user status queries
|
|
48
|
+
CREATE INDEX idx_users_status_created ON users(status, created_at)
|
|
49
|
+
WHERE status IS NOT NULL;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Subquery Optimization
|
|
53
|
+
```sql
|
|
54
|
+
-- ❌ BAD: Correlated subquery
|
|
55
|
+
SELECT p.product_name, p.price
|
|
56
|
+
FROM products p
|
|
57
|
+
WHERE p.price > (
|
|
58
|
+
SELECT AVG(price)
|
|
59
|
+
FROM products p2
|
|
60
|
+
WHERE p2.category_id = p.category_id
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
-- ✅ GOOD: Window function approach
|
|
64
|
+
SELECT product_name, price
|
|
65
|
+
FROM (
|
|
66
|
+
SELECT product_name, price,
|
|
67
|
+
AVG(price) OVER (PARTITION BY category_id) as avg_category_price
|
|
68
|
+
FROM products
|
|
69
|
+
) ranked
|
|
70
|
+
WHERE price > avg_category_price;
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 📊 Performance Tuning Techniques
|
|
74
|
+
|
|
75
|
+
### JOIN Optimization
|
|
76
|
+
```sql
|
|
77
|
+
-- ❌ BAD: Inefficient JOIN order and conditions
|
|
78
|
+
SELECT o.*, c.name, p.product_name
|
|
79
|
+
FROM orders o
|
|
80
|
+
LEFT JOIN customers c ON o.customer_id = c.id
|
|
81
|
+
LEFT JOIN order_items oi ON o.id = oi.order_id
|
|
82
|
+
LEFT JOIN products p ON oi.product_id = p.id
|
|
83
|
+
WHERE o.created_at > '2024-01-01'
|
|
84
|
+
AND c.status = 'active';
|
|
85
|
+
|
|
86
|
+
-- ✅ GOOD: Optimized JOIN with filtering
|
|
87
|
+
SELECT o.id, o.total_amount, c.name, p.product_name
|
|
88
|
+
FROM orders o
|
|
89
|
+
INNER JOIN customers c ON o.customer_id = c.id AND c.status = 'active'
|
|
90
|
+
INNER JOIN order_items oi ON o.id = oi.order_id
|
|
91
|
+
INNER JOIN products p ON oi.product_id = p.id
|
|
92
|
+
WHERE o.created_at > '2024-01-01';
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Pagination Optimization
|
|
96
|
+
```sql
|
|
97
|
+
-- ❌ BAD: OFFSET-based pagination (slow for large offsets)
|
|
98
|
+
SELECT * FROM products
|
|
99
|
+
ORDER BY created_at DESC
|
|
100
|
+
LIMIT 20 OFFSET 10000;
|
|
101
|
+
|
|
102
|
+
-- ✅ GOOD: Cursor-based pagination
|
|
103
|
+
SELECT * FROM products
|
|
104
|
+
WHERE created_at < '2024-06-15 10:30:00'
|
|
105
|
+
ORDER BY created_at DESC
|
|
106
|
+
LIMIT 20;
|
|
107
|
+
|
|
108
|
+
-- Or using ID-based cursor
|
|
109
|
+
SELECT * FROM products
|
|
110
|
+
WHERE id > 1000
|
|
111
|
+
ORDER BY id
|
|
112
|
+
LIMIT 20;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Aggregation Optimization
|
|
116
|
+
```sql
|
|
117
|
+
-- ❌ BAD: Multiple separate aggregation queries
|
|
118
|
+
SELECT COUNT(*) FROM orders WHERE status = 'pending';
|
|
119
|
+
SELECT COUNT(*) FROM orders WHERE status = 'shipped';
|
|
120
|
+
SELECT COUNT(*) FROM orders WHERE status = 'delivered';
|
|
121
|
+
|
|
122
|
+
-- ✅ GOOD: Single query with conditional aggregation
|
|
123
|
+
SELECT
|
|
124
|
+
COUNT(CASE WHEN status = 'pending' THEN 1 END) as pending_count,
|
|
125
|
+
COUNT(CASE WHEN status = 'shipped' THEN 1 END) as shipped_count,
|
|
126
|
+
COUNT(CASE WHEN status = 'delivered' THEN 1 END) as delivered_count
|
|
127
|
+
FROM orders;
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 🔍 Query Anti-Patterns
|
|
131
|
+
|
|
132
|
+
### SELECT Performance Issues
|
|
133
|
+
```sql
|
|
134
|
+
-- ❌ BAD: SELECT * anti-pattern
|
|
135
|
+
SELECT * FROM large_table lt
|
|
136
|
+
JOIN another_table at ON lt.id = at.ref_id;
|
|
137
|
+
|
|
138
|
+
-- ✅ GOOD: Explicit column selection
|
|
139
|
+
SELECT lt.id, lt.name, at.value
|
|
140
|
+
FROM large_table lt
|
|
141
|
+
JOIN another_table at ON lt.id = at.ref_id;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### WHERE Clause Optimization
|
|
145
|
+
```sql
|
|
146
|
+
-- ❌ BAD: Function calls in WHERE clause
|
|
147
|
+
SELECT * FROM orders
|
|
148
|
+
WHERE UPPER(customer_email) = 'JOHN@EXAMPLE.COM';
|
|
149
|
+
|
|
150
|
+
-- ✅ GOOD: Index-friendly WHERE clause
|
|
151
|
+
SELECT * FROM orders
|
|
152
|
+
WHERE customer_email = 'john@example.com';
|
|
153
|
+
-- Consider: CREATE INDEX idx_orders_email ON orders(LOWER(customer_email));
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### OR vs UNION Optimization
|
|
157
|
+
```sql
|
|
158
|
+
-- ❌ BAD: Complex OR conditions
|
|
159
|
+
SELECT * FROM products
|
|
160
|
+
WHERE (category = 'electronics' AND price < 1000)
|
|
161
|
+
OR (category = 'books' AND price < 50);
|
|
162
|
+
|
|
163
|
+
-- ✅ GOOD: UNION approach for better optimization
|
|
164
|
+
SELECT * FROM products WHERE category = 'electronics' AND price < 1000
|
|
165
|
+
UNION ALL
|
|
166
|
+
SELECT * FROM products WHERE category = 'books' AND price < 50;
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## 📈 Database-Agnostic Optimization
|
|
170
|
+
|
|
171
|
+
### Batch Operations
|
|
172
|
+
```sql
|
|
173
|
+
-- ❌ BAD: Row-by-row operations
|
|
174
|
+
INSERT INTO products (name, price) VALUES ('Product 1', 10.00);
|
|
175
|
+
INSERT INTO products (name, price) VALUES ('Product 2', 15.00);
|
|
176
|
+
INSERT INTO products (name, price) VALUES ('Product 3', 20.00);
|
|
177
|
+
|
|
178
|
+
-- ✅ GOOD: Batch insert
|
|
179
|
+
INSERT INTO products (name, price) VALUES
|
|
180
|
+
('Product 1', 10.00),
|
|
181
|
+
('Product 2', 15.00),
|
|
182
|
+
('Product 3', 20.00);
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Temporary Table Usage
|
|
186
|
+
```sql
|
|
187
|
+
-- ✅ GOOD: Using temporary tables for complex operations
|
|
188
|
+
CREATE TEMPORARY TABLE temp_calculations AS
|
|
189
|
+
SELECT customer_id,
|
|
190
|
+
SUM(total_amount) as total_spent,
|
|
191
|
+
COUNT(*) as order_count
|
|
192
|
+
FROM orders
|
|
193
|
+
WHERE created_at >= '2024-01-01'
|
|
194
|
+
GROUP BY customer_id;
|
|
195
|
+
|
|
196
|
+
-- Use the temp table for further calculations
|
|
197
|
+
SELECT c.name, tc.total_spent, tc.order_count
|
|
198
|
+
FROM temp_calculations tc
|
|
199
|
+
JOIN customers c ON tc.customer_id = c.id
|
|
200
|
+
WHERE tc.total_spent > 1000;
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## 🛠️ Index Management
|
|
204
|
+
|
|
205
|
+
### Index Design Principles
|
|
206
|
+
```sql
|
|
207
|
+
-- ✅ GOOD: Covering index design
|
|
208
|
+
CREATE INDEX idx_orders_covering
|
|
209
|
+
ON orders(customer_id, created_at)
|
|
210
|
+
INCLUDE (total_amount, status); -- SQL Server syntax
|
|
211
|
+
-- Or: CREATE INDEX idx_orders_covering ON orders(customer_id, created_at, total_amount, status); -- Other databases
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Partial Index Strategy
|
|
215
|
+
```sql
|
|
216
|
+
-- ✅ GOOD: Partial indexes for specific conditions
|
|
217
|
+
CREATE INDEX idx_orders_active
|
|
218
|
+
ON orders(created_at)
|
|
219
|
+
WHERE status IN ('pending', 'processing');
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## 📊 Performance Monitoring Queries
|
|
223
|
+
|
|
224
|
+
### Query Performance Analysis
|
|
225
|
+
```sql
|
|
226
|
+
-- Generic approach to identify slow queries
|
|
227
|
+
-- (Specific syntax varies by database)
|
|
228
|
+
|
|
229
|
+
-- For MySQL:
|
|
230
|
+
SELECT query_time, lock_time, rows_sent, rows_examined, sql_text
|
|
231
|
+
FROM mysql.slow_log
|
|
232
|
+
ORDER BY query_time DESC;
|
|
233
|
+
|
|
234
|
+
-- For PostgreSQL:
|
|
235
|
+
SELECT query, calls, total_time, mean_time
|
|
236
|
+
FROM pg_stat_statements
|
|
237
|
+
ORDER BY total_time DESC;
|
|
238
|
+
|
|
239
|
+
-- For SQL Server:
|
|
240
|
+
SELECT
|
|
241
|
+
qs.total_elapsed_time/qs.execution_count as avg_elapsed_time,
|
|
242
|
+
qs.execution_count,
|
|
243
|
+
SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,
|
|
244
|
+
((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text)
|
|
245
|
+
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) as query_text
|
|
246
|
+
FROM sys.dm_exec_query_stats qs
|
|
247
|
+
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
|
|
248
|
+
ORDER BY avg_elapsed_time DESC;
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## 🎯 Universal Optimization Checklist
|
|
252
|
+
|
|
253
|
+
### Query Structure
|
|
254
|
+
- [ ] Avoiding SELECT * in production queries
|
|
255
|
+
- [ ] Using appropriate JOIN types (INNER vs LEFT/RIGHT)
|
|
256
|
+
- [ ] Filtering early in WHERE clauses
|
|
257
|
+
- [ ] Using EXISTS instead of IN for subqueries when appropriate
|
|
258
|
+
- [ ] Avoiding functions in WHERE clauses that prevent index usage
|
|
259
|
+
|
|
260
|
+
### Index Strategy
|
|
261
|
+
- [ ] Creating indexes on frequently queried columns
|
|
262
|
+
- [ ] Using composite indexes in the right column order
|
|
263
|
+
- [ ] Avoiding over-indexing (impacts INSERT/UPDATE performance)
|
|
264
|
+
- [ ] Using covering indexes where beneficial
|
|
265
|
+
- [ ] Creating partial indexes for specific query patterns
|
|
266
|
+
|
|
267
|
+
### Data Types and Schema
|
|
268
|
+
- [ ] Using appropriate data types for storage efficiency
|
|
269
|
+
- [ ] Normalizing appropriately (3NF for OLTP, denormalized for OLAP)
|
|
270
|
+
- [ ] Using constraints to help query optimizer
|
|
271
|
+
- [ ] Partitioning large tables when appropriate
|
|
272
|
+
|
|
273
|
+
### Query Patterns
|
|
274
|
+
- [ ] Using LIMIT/TOP for result set control
|
|
275
|
+
- [ ] Implementing efficient pagination strategies
|
|
276
|
+
- [ ] Using batch operations for bulk data changes
|
|
277
|
+
- [ ] Avoiding N+1 query problems
|
|
278
|
+
- [ ] Using prepared statements for repeated queries
|
|
279
|
+
|
|
280
|
+
### Performance Testing
|
|
281
|
+
- [ ] Testing queries with realistic data volumes
|
|
282
|
+
- [ ] Analyzing query execution plans
|
|
283
|
+
- [ ] Monitoring query performance over time
|
|
284
|
+
- [ ] Setting up alerts for slow queries
|
|
285
|
+
- [ ] Regular index usage analysis
|
|
286
|
+
|
|
287
|
+
## 📝 Optimization Methodology
|
|
288
|
+
|
|
289
|
+
1. **Identify**: Use database-specific tools to find slow queries
|
|
290
|
+
2. **Analyze**: Examine execution plans and identify bottlenecks
|
|
291
|
+
3. **Optimize**: Apply appropriate optimization techniques
|
|
292
|
+
4. **Test**: Verify performance improvements
|
|
293
|
+
5. **Monitor**: Continuously track performance metrics
|
|
294
|
+
6. **Iterate**: Regular performance review and optimization
|
|
295
|
+
|
|
296
|
+
Focus on measurable performance improvements and always test optimizations with realistic data volumes and query patterns.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: summarize
|
|
3
3
|
description: 把一份素材(SPMS 的需求/开发计划/Issue、一份本地文档、或一个主题)讲成一份人人都读得懂的 HTML 报告,并提交到指定项目的「报告」Tab。凡用户输入 /summarize <素材> --project <项目>,或要求「给这条需求写份解读 / 把这份开发计划总结一下发到项目里 / 出一份报告放到项目报告区」时使用。Use when the user types /summarize <material>, or asks for a readable report to be produced and filed into an SPMS project's Reports tab.
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# summarize · 产出一份报告,并把它放进项目里
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
| 角色 | 载体 | 模型/effort | 权限 | 可写范围 | 职责 |
|
|
30
30
|
|------|------|-----------|------|---------|------|
|
|
31
31
|
| **lead(产品负责人)** | 当前会话 | — | — | 定稿合入 | 唯一与用户对话的人;汇聚澄清问题并批量提问;裁决分歧;合成评审结论 |
|
|
32
|
-
| **product-designer(产品设计师)** | `general-purpose`,或自定义 `.claude/agents/product-designer.md` | `opus`/`sonnet` + `high` | `acceptEdits` | `docs/prd/<feature>.md`(**PRD 唯一写手**) | 按 PRD 骨架产出:概述/目标/非目标 + 逐条 FR/NFR + 可断言验收标准 + TC
|
|
32
|
+
| **product-designer(产品设计师)** | `general-purpose`,或自定义 `.claude/agents/product-designer.md` | `opus`/`sonnet` + `high` | `acceptEdits` | `docs/prd/<feature>.md`(**PRD 唯一写手**) | 按 PRD 骨架产出:概述/目标/非目标 + 逐条 FR/NFR + 可断言验收标准 + UAT 场景预期状态;六维推演与 SMAR 检查,分期建议放末尾,不创建 TC |
|
|
33
33
|
| **clarifier(需求澄清官)** | `Explore`(只读) | `sonnet` | 只读 | 不写文件,交问题清单 | 找歧义、缺口、隐含假设;构造 2–4 个高信息量业务场景压测语义与边界;问题分级并给建议默认值 |
|
|
34
34
|
| **stakeholder-proxy(干系人代理)** | `Explore` | `sonnet` | 只读 | 交立场报告 | 分别代入最终用户 / 运营 / 客服 / 合规 / 数据等视角,指出这份需求会让哪个角色受伤、哪句话会被误解 |
|
|
35
35
|
| **feasibility-reviewer(技术可行性评审)** | `Explore` | `sonnet`/`opus` | 只读 | 交可行性报告 | 对着**代码库事实**核对:现有数据模型/接口/权限能否承接、影响面、隐藏成本;结论分「可直接做 / 需先改 X / 做不到」 |
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
|-------|------|------------------|
|
|
87
87
|
| `prd` | product-designer | PRD 骨架、FR/NFR 编号与验收标准写法、SPMS 写入口径 |
|
|
88
88
|
| `story-points` | estimator | 四轴因子表、复现性要求(同输入同输出)、写回 `plannedPoints` 前需 lead 同意 |
|
|
89
|
-
| `test-plan` | acceptance-reviewer |
|
|
89
|
+
| `test-plan` | acceptance-reviewer | 将验收条件与 UAT 状态展开为测试方法及「标准 → 用例」映射;不得覆盖或改写既有用例(含历史 PRD 种子) |
|
|
90
90
|
| `dev-plan` | 定稿后由 lead 触发 | 需求定稿是 dev-plan 的前置输入 |
|
|
91
91
|
|
|
92
92
|
---
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd
|
|
3
|
+
description: "Use only when the user explicitly asks for TDD, a failing test, or a regression test, OR when the bug has an obvious cheap local test target. Skip when the test path is unclear, expensive, integration-heavy, or not requested."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# TDD Bug Fix
|
|
8
|
+
|
|
9
|
+
When fixing a bug with a clear, cheap test path, make the broken behavior executable before changing production code. The goal is a focused regression test that fails before the fix and passes after it.
|
|
10
|
+
|
|
11
|
+
Do not force a test when it would be impractical. If the available test would require broad harness setup, brittle mocks, slow end-to-end infrastructure, production-only state, vague reproduction steps, or large unrelated fixture churn, skip adding a new test and use the closest useful verification instead.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. **Understand the bug.** Identify the intended behavior, current behavior, affected path, and smallest observable reproduction.
|
|
16
|
+
2. **Choose the narrowest executable check.** Prefer the closest unit, component, integration, or regression test already used for that codepath. If no practical test path is obvious, do not create one from scratch just to satisfy the workflow.
|
|
17
|
+
3. **Write the failing test first.** Add the smallest focused test that would have caught the bug. The test should encode intended behavior, not mirror the current implementation.
|
|
18
|
+
4. **Run the new test before fixing.** Confirm it fails for the intended reason. If it passes or fails for an unrelated reason, correct the test or reproduction before editing the implementation.
|
|
19
|
+
5. **Fix the bug.** Make the smallest production change that satisfies the intended behavior while preserving nearby contracts.
|
|
20
|
+
6. **Rerun the regression test.** Confirm the test now passes.
|
|
21
|
+
|
|
22
|
+
## If a Failing Test Is Impractical
|
|
23
|
+
|
|
24
|
+
Use the closest executable regression check instead: a targeted script, manual reproduction command, browser automation, snapshot comparison, log assertion, or focused integration check.
|
|
25
|
+
|
|
26
|
+
Prefer no new test over a bad test. A bad test is one that mostly tests mocks, encodes current implementation details, depends on timing or unrelated global state, needs expensive infrastructure for a small fix, or would be deleted immediately after proving the fix.
|
|
27
|
+
|
|
28
|
+
## Guardrails
|
|
29
|
+
|
|
30
|
+
- Do not change tests merely to match a wrong implementation.
|
|
31
|
+
- Do not weaken existing assertions unless the expected behavior has genuinely changed and the reason is clear.
|
|
32
|
+
- Keep the regression test focused on the bug. Avoid broad fixture churn or unrelated coverage expansion.
|
|
33
|
+
- If the bug is flaky, make the test deterministic where possible and document the signal being locked down.
|
|
34
|
+
- If the bug exposes a broader class of failures, first land the focused regression path, then consider additional sibling coverage.
|
|
35
|
+
|
|
36
|
+
## Final Response
|
|
37
|
+
|
|
38
|
+
Report the evidence, not just the outcome:
|
|
39
|
+
|
|
40
|
+
- Name the failing-before test or executable check and the failure it produced.
|
|
41
|
+
- Name the passing-after test run and any nearby validation performed.
|
|
42
|
+
- If failing-before evidence could not be demonstrated, state why and describe the closest regression check used instead.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teach
|
|
3
|
+
description: "Explain a body of work plainly so a person actually understands it. Runs the `how` and `why` skills and weaves what they find into one clear explanation. Use for 'teach me this', 'help me really understand X', 'explain this change or subsystem to me'."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Teach
|
|
8
|
+
|
|
9
|
+
**You explain what a thing is, how it works, and why it's built that way, in one plain account at the person's pace. The goal is that they understand it, not that you change anything.**
|
|
10
|
+
|
|
11
|
+
Teach sits on top of `how` and `why`. Get your bearings on what the work is and what it touches, then run `how` for how it works and `why` for why it's that way. Those are real skill invocations that do their own digging. Blend what they find into one plain explanation, lead with what matters to the person, and go deeper when they ask. Reword freely for teaching, with one exception. Keep `why`'s confidence language intact (its hedges are findings, not style).
|
|
12
|
+
|
|
13
|
+
1. Decide the few things they should walk away understanding. Choose them from why they're asking (about to change it, reviewing it, debugging it, new to it) and what they already know, both read from the conversation, not quizzed out of them. Skip what they plainly already know. Put the depth where their question is.
|
|
14
|
+
2. Let `how` and `why` do the work, don't redo it. Read the code yourself to get oriented, then run `how` for how it works and `why` for why. Run them in parallel and combine the results. Match the size to the question. Run both for a subsystem, maybe one is enough for a small change. Keep `why` narrow by default since its full sweep is slow. Put the narrowing in the ask itself (a scoped question, git plus a source or two) so `why` records the skipped categories per its own contract, and widen it only when the reasons are the point.
|
|
15
|
+
3. Start with a plain definition. Name the thing and say what it is in general terms, the way a senior engineer would say it out loud, with its common name if it has one. Then tie it to the case in front of you ("in X, we use this to ...") and build from there: how it works, the deeper reasons, the edge cases. For each part, explain the idea so it clicks: the problem it solves and how it actually works. Walk through what happens as the person does the thing (opens a long chat, scrolls up) when that is what makes it land. Listing functions and constants is reference, not teaching. Don't print framing labels ("the one idea to hold onto", "the thing to walk away with", "the key insight", "at its core", "TL;DR"). Give the smallest complete answer first, a sentence or two, not a dense paragraph, then stop. Add layers when they ask. Never a wall of text.
|
|
16
|
+
4. Keep it a conversation, not a lecture or a performance. Offer to go deeper or move on, and follow their lead. No quizzes. No pacing theater. Don't print "Pause", don't ask them to say it back, don't announce "the sentence to nail", and don't flag a part as important or hard ("here is the part worth slowing down on", "this is the tricky part", "here is where it gets interesting"). Just say it. When you would pause, stop and let them respond. Running one-shot with no live human, deliver it cleanly and put any offer to go deeper at the end.
|
|
17
|
+
5. Show, don't only tell, and build the picture up diagram by diagram. Open the diff, the code, or the debugger when that is the fastest way to land it. Draw when a picture lands faster than words. For anything with three or more moving parts, do not draw one diagram with all of them at once. Draw a short series instead, where each diagram redraws the last and adds a single part, so the reader watches the system assemble. A single all-at-once diagram, especially one saved for the end, is a reference, not teaching. Concretely, to teach a flow from A to B to C, draw it three times. First A to B. Then redraw and add C. Then redraw and add the return edge or the next piece. Match the medium to the idea, and use both kinds when both help. A mermaid diagram fits a flow or structure where the labels carry the meaning. When the idea is spatial, like layout, overlap, scroll position, or a before and after, reach for the image-generation tool and draw it marker-on-whiteboard style with a few short labels, since image models garble long text. Generate that picture, don't settle for describing it in words. The build-up rule holds for generated images too. A single simple point needs no figure.
|
|
18
|
+
|
|
19
|
+
Write every response through the **unslop** skill, in plain spoken English, the way you'd explain it to a colleague. Be tight, not terse. Cut filler and hedging, keep the part that makes it click. State the concrete mechanism, not a metaphor, a framing, or a preview of what is coming. This is the target density: "Virtualization runs in two parts, one for rendering and one for loading from disk. When an item scrolls out past the buffer, both its DOM node and its in-memory data are evicted." Normal sentence case, not all-lowercase. No em dashes. Prefer periods over commas. Keep each sentence to one or two commas. If clauses pile up, split them into separate sentences. Give each concept one name and keep it. Avoid mirror sentences ("A without B, or B without A") and tidy closers ("the rest follows", "it all falls out"). The words in these steps are directions to you, not labels to print. Don't echo the structure as headers or stock phrases.
|
|
20
|
+
|
|
21
|
+
**Reply:** the explanation itself, never a report about what you did or delivered. Lead with the main point, then the plain account of what it is, how it works, and why, and the threads worth chasing with `how` or `why`.
|
|
@@ -22,18 +22,19 @@ description: 由需求(PRD 正文 + 验收标准)成套产出测试用例草
|
|
|
22
22
|
|
|
23
23
|
## 与 `prd` skill 的分工(别重复建单)
|
|
24
24
|
|
|
25
|
-
`prd` skill
|
|
25
|
+
`prd` skill 定义**做什么、不同用户场景的预期状态与验收条件**,不设计测试步骤,也不要求创建 TC。**本 skill 负责怎么测**:将验收标准与 UAT 状态展开为测试数据、步骤、方法和成套 TC。
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
承接时先查已有用例,既有 PRD 可能已经留有 TC 种子,不能假定每条需求都有:
|
|
28
28
|
|
|
29
|
-
- ⛔
|
|
30
|
-
- ✅
|
|
31
|
-
- ✅
|
|
29
|
+
- ⛔ **既有用例不得被覆盖、不得被删除、不得被改写**;
|
|
30
|
+
- ✅ 既有用例已覆盖的验收标准,在映射表里指向**真实 key**,不新建重复用例;尚无 TC 时从零设计成套;
|
|
31
|
+
- ✅ 按 §1 查重——服务端只对**字面同名**幂等,语义等同但换了说法的用例仍会各建一条,而 `TC-N` 是**租户级序列、烧掉不可回收**;
|
|
32
|
+
- ✅ 产品预期状态不明确时反馈需求缺口,不在测试设计中自行决定产品行为。
|
|
32
33
|
|
|
33
34
|
## 流程总览
|
|
34
35
|
|
|
35
36
|
```
|
|
36
|
-
0. 读需求 →
|
|
37
|
+
0. 读需求 → PRD/UAT 预期状态 + 验收标准逐条编号 AC1..ACn + projectId
|
|
37
38
|
1. 查重 → testcase_list(requirementKey) 翻页到 hasMore=false,建立现有用例清单
|
|
38
39
|
2. 设计用例 → 四类覆盖 + 逐条映射(references/case-taxonomy.md)
|
|
39
40
|
3. 判可断言性 → 推不出步骤的标准 → 报出,不编
|
|
@@ -45,7 +46,7 @@ description: 由需求(PRD 正文 + 验收标准)成套产出测试用例草
|
|
|
45
46
|
|
|
46
47
|
`requirement_get(key)` 拿三样东西:
|
|
47
48
|
|
|
48
|
-
- `description`(PRD 正文)
|
|
49
|
+
- `description`(PRD 正文)——理解上下文及场景预期状态;用户提供 PRD 时同时读其中的 UAT 状态表;
|
|
49
50
|
- `acceptanceCriteria`——**按 `\n` 切行,逐条编号 AC1…ACn**(SPMS 的验收标准就是一行一条,前端按行渲染成圆点列表);
|
|
50
51
|
- `projectId`——`testcase_create` 的必填入参,**从这里取**,不要向用户要。
|
|
51
52
|
|
|
@@ -72,7 +73,7 @@ description: 由需求(PRD 正文 + 验收标准)成套产出测试用例草
|
|
|
72
73
|
|
|
73
74
|
## 第 3 步:判可断言性(拒绝编造)
|
|
74
75
|
|
|
75
|
-
一条验收标准**推不出可执行步骤**时(
|
|
76
|
+
一条验收标准**推不出可执行步骤**时(没有可观测的输出、阈值缺口径、只有形容词),产出的是**报告不是用例**。明确的状态、枚举、相等/不变也可断言,不因缺少数字拒绝合格标准:
|
|
76
77
|
|
|
77
78
|
```
|
|
78
79
|
AC3「操作体验流畅」→ ⛔ 无法成例
|
|
@@ -95,7 +96,7 @@ AC3「操作体验流畅」→ ⛔ 无法成例
|
|
|
95
96
|
## 红线(任何情况下不违反)
|
|
96
97
|
|
|
97
98
|
- **不碰终态。** 不转 `active`、**不回填 `result`**(那是修复闭环 `testcase_update` 的活)、不删用例、不改需求状态。
|
|
98
|
-
- **不重复建单。**
|
|
99
|
+
- **不重复建单。** 写入前必须查重且翻页到底;既有用例(含历史 PRD 种子)不动。
|
|
99
100
|
- **不编造用例。** 推不出步骤就报出该条无法成例。
|
|
100
101
|
- **不声称未发生的写入。** 无 `write` 能力时报出 `CAPABILITY_REQUIRED` 并**明说未写入**(能力签发时定死,只能重签,改白名单无效);写入失败同理,失败几条说几条。
|
|
101
102
|
- **不越出项目白名单。** `PROJECT_NOT_ALLOWED` 就停,不改去别的项目建单。
|
|
@@ -113,7 +114,7 @@ AC3「操作体验流畅」→ ⛔ 无法成例
|
|
|
113
114
|
|
|
114
115
|
## 汇报格式(交付时逐项给出)
|
|
115
116
|
|
|
116
|
-
1. **映射表**:AC1…ACn × 用例 key(
|
|
117
|
+
1. **映射表**:AC1…ACn / UAT 场景 × 用例 key(含已存在的用例)——**空格 = 覆盖有洞**;
|
|
117
118
|
2. **四类计数**:正常路径 / 边界 / 权限 / 并发 各几条(每类 ≥1);
|
|
118
119
|
3. **新建 key 清单**:TC-N 列表;
|
|
119
120
|
4. **无法成例清单**:哪条 AC、缺什么、建议怎么改写;
|
|
@@ -125,7 +126,7 @@ AC3「操作体验流畅」→ ⛔ 无法成例
|
|
|
125
126
|
## 通用默认值(任何 repo 都适用)
|
|
126
127
|
|
|
127
128
|
- **MCP 工具**:SPMS MCP 的 `requirement_get` / `testcase_list` / `testcase_create` / `testcase_get` / `pms_search`(挂载名以你本地 MCP 配置为准,惯例是 `xgent-pms`,即 `mcp__xgent-pms__*`)。
|
|
128
|
-
- **上游**:需求由 `prd` skill
|
|
129
|
+
- **上游**:需求由 `prd` skill 定清产品行为、场景预期状态与验收条件;本 skill 展开怎么测并创建成套 TC,兼容已有历史种子。
|
|
129
130
|
- **不做**:执行测试、回填 `result`、改 TC 数据模型。
|
|
130
131
|
|
|
131
132
|
## 本仓库(xgent-ai-portal)默认值
|
|
@@ -32,11 +32,12 @@
|
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
- **每条 AC 至少一个用例 key**;
|
|
35
|
-
-
|
|
35
|
+
- **既有用例(含历史 PRD 种子)**也进表(指向真实 key,不新建);上游没有 TC 时从零设计;
|
|
36
|
+
- PRD 的 UAT 预期状态一并映射到 AC 与用例;数据准备、执行步骤和工具在测试计划展开,不自行补定产品状态;
|
|
36
37
|
- **空格 = 覆盖有洞**,交付前自己先扫一遍;
|
|
37
38
|
- 覆盖率**没有自动断言**(需要语义判断),这张表就是人工核对的依据。
|
|
38
39
|
|
|
39
|
-
## 3. 查重口径(
|
|
40
|
+
## 3. 查重口径(创建任何 TC 前使用)
|
|
40
41
|
|
|
41
42
|
```
|
|
42
43
|
1. testcase_list(requirementKey='FR-x', limit=200)
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: why
|
|
3
|
+
description: "Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Discovers available MCPs and queries each evidence category (source control, issue tracker, long-form docs, real-time chat, infrastructure observability, error tracking, product analytics warehouse) in parallel, then returns a cited read on decisions and tradeoffs. Use how for runtime behavior."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Why
|
|
8
|
+
|
|
9
|
+
Investigate the motivation and intent behind code.
|
|
10
|
+
|
|
11
|
+
Companion to the `how` skill. `how` answers what the code does and how it works. `why` answers what forces led to its shape.
|
|
12
|
+
|
|
13
|
+
Each spawn below names a role line in the `pstack-models.mdc` rule and a default. Set `model` to that line's value, or to the default if the rule or the line is missing. Leave `model` unset when the value is `auto` or `inherit-parent`. If the Task tool rejects a slug, use the default and say so. If it rejects the default, use the closest valid slug of the same family from its error message.
|
|
14
|
+
|
|
15
|
+
## Operating Posture
|
|
16
|
+
|
|
17
|
+
Operate as a **careful, cautious, and precise investigator**. Be honest about what you know vs what you're inferring. Read `references/epistemics.md` for the full confidence framework and phrasing guide. The synthesizer must follow it.
|
|
18
|
+
|
|
19
|
+
## Step 1. Understand the Target and the Question
|
|
20
|
+
|
|
21
|
+
Parse what the user is asking. The **target** is usually a chunk of code, a pattern, a feature, or a named design decision. The **question** is usually a design rationale, a tradeoff, a motivating edge case, an external constraint, dead code, or a broad history sweep.
|
|
22
|
+
|
|
23
|
+
If the target is vague ("why do we do it this way?" with no clear referent), make your best guess from conversation context (open files, recent edits, cursor location, what was just discussed). State your interpretation briefly so the user can redirect if you're off, then proceed.
|
|
24
|
+
|
|
25
|
+
## Step 2. Establish the Code Anchor
|
|
26
|
+
|
|
27
|
+
Before spawning investigators, anchor the investigation in concrete code. You need:
|
|
28
|
+
|
|
29
|
+
- The relevant file path(s) and line range(s)
|
|
30
|
+
- The key symbols (function names, class names, constants)
|
|
31
|
+
- An initial commit list. The last few commits touching the target.
|
|
32
|
+
- PR numbers from merge commits (pattern `(#1234)` in the subject line)
|
|
33
|
+
|
|
34
|
+
Build this inline.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Blame target lines for last-touch commits
|
|
38
|
+
git blame -L <start>,<end> <file>
|
|
39
|
+
|
|
40
|
+
# Full file history, with patches, through renames
|
|
41
|
+
git log --follow -p -- <file>
|
|
42
|
+
|
|
43
|
+
# Last N commits touching the file, PR numbers visible
|
|
44
|
+
git log --oneline -20 -- <file>
|
|
45
|
+
|
|
46
|
+
# Extract PR numbers from a commit message
|
|
47
|
+
git log -1 --format=%B <commit>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Pull PR bodies and discussion via `gh` for any substantive commits:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
gh pr view <number> --json title,body,author,createdAt,mergedAt,labels,closingIssuesReferences,comments,reviews
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Capture this as seed context (file paths, symbols, commits, PR numbers, linked ticket IDs). Pass it to the investigators.
|
|
57
|
+
|
|
58
|
+
## Step 3. Spawn Parallel Investigators (default posture)
|
|
59
|
+
|
|
60
|
+
**Default to the full parallel investigation.**
|
|
61
|
+
|
|
62
|
+
### Discovery
|
|
63
|
+
|
|
64
|
+
Before spawning investigators, list the available MCPs from the Cursor environment. Use the available-tools map when present. Otherwise inspect the `mcps/` directory Cursor exposes for enabled MCP servers.
|
|
65
|
+
|
|
66
|
+
Map each available MCP to one evidence category:
|
|
67
|
+
|
|
68
|
+
1. Source control history
|
|
69
|
+
2. Issue / ticket tracker
|
|
70
|
+
3. Long-form documents
|
|
71
|
+
4. Real-time team chat
|
|
72
|
+
5. Infrastructure observability
|
|
73
|
+
6. Error / exception tracking
|
|
74
|
+
7. Product analytics warehouse
|
|
75
|
+
|
|
76
|
+
Source control is always available through git and `gh`. For the other six, classify using the MCP name, server instructions, tool names, and resource descriptors. If an MCP could fit more than one category, choose the one matching its primary evidence. Record ambiguous cases in the coverage map.
|
|
77
|
+
|
|
78
|
+
Aim for a complete **coverage map**, not a minimal one. Document the null, don't skip the search.
|
|
79
|
+
|
|
80
|
+
Launch all matching investigators in a single message so they run concurrently. Don't ask one agent to cover multiple MCPs.
|
|
81
|
+
|
|
82
|
+
Subagent config (each):
|
|
83
|
+
- `subagent_type`: `generalPurpose`
|
|
84
|
+
- `model`: the `why investigators` line, default `grok-4.7-xhigh-fast`
|
|
85
|
+
- `readonly`: `false` (agent mode). **Do not use readonly/Ask mode.** It strips MCP access, which disables MCP-backed investigators entirely. Investigators still shouldn't write anything.
|
|
86
|
+
|
|
87
|
+
Each investigator gets:
|
|
88
|
+
1. The base prompt from `references/investigator-prompt.md`
|
|
89
|
+
2. The category playbook `references/sources/<source>.md` for the selected MCP, adapted from the examples in `references/source-playbook.md`
|
|
90
|
+
3. The cross-cutting `references/sources/incident-postmortem.md` **if the target code looks defensive** (null checks, retry logic, timeout handling, rate limiting, feature flags, egress guards, OOM handlers)
|
|
91
|
+
4. The code anchor from Step 2 (file paths, symbols, commit hashes, PR numbers, ticket IDs)
|
|
92
|
+
5. The user's original question
|
|
93
|
+
|
|
94
|
+
### Investigator roster. One per available evidence category
|
|
95
|
+
|
|
96
|
+
Spawn one investigator per category that has a matching MCP. Each owns exactly one tool or MCP.
|
|
97
|
+
|
|
98
|
+
Each entry names the category and the kind of "why" it uniquely surfaces. Use it to know what to expect back, how to name a gap when a category returns empty, and (only in the rare provably-irrelevant case) to justify a skip.
|
|
99
|
+
|
|
100
|
+
1. **Source control investigator**. Git history, `gh` for PRs, code comments, tests. Always spawn. The only guaranteed source. Best at surfacing *implementation-time rationale captured during review*.
|
|
101
|
+
|
|
102
|
+
2. **Issue / ticket tracker investigator** (e.g. Linear, Jira, GitHub Issues, Plane, Shortcut MCP). Best at surfacing *the product or business forcing function*. Strongest when the why is external to engineering.
|
|
103
|
+
|
|
104
|
+
3. **Long-form documents investigator** (e.g. Notion, Confluence, Google Docs, Coda MCP). Best at surfacing *long-form design rationale*. Where the why is written out before it becomes code.
|
|
105
|
+
|
|
106
|
+
4. **Real-time team chat investigator** (e.g. Slack, Discord, Microsoft Teams, Mattermost MCP). Best at surfacing *real-time deliberation that never reached a doc*. Especially important when the source control, ticket, and doc paper trail is thin.
|
|
107
|
+
|
|
108
|
+
5. **Infrastructure observability investigator** (e.g. Datadog, New Relic, Honeycomb, Grafana, Splunk MCP). Infra/runtime view. Best at surfacing *infrastructure and runtime reality that motivated the code*. Strongest when the target reacts to an infra signal (timeouts, retries, rate limits, circuit breakers).
|
|
109
|
+
|
|
110
|
+
6. **Error / exception tracking investigator** (e.g. Sentry, Rollbar, Bugsnag, Airbrake MCP). Best at surfacing *the specific exceptions and error trajectories that motivated defensive or corrective code*. Strongest for catch blocks, null guards, type checks, retries, and other defenses.
|
|
111
|
+
|
|
112
|
+
7. **Product analytics warehouse investigator** (e.g. Databricks, Snowflake, BigQuery, ClickHouse, dbt, Redshift MCP). Product/data view. Best at surfacing *product and data reality that shaped the code*. Strongest for flag-gated code, experiment-driven ships, data migrations, and "where did this number come from" questions.
|
|
113
|
+
|
|
114
|
+
### When to skip an investigator
|
|
115
|
+
|
|
116
|
+
Only skip with an **explicit, written justification** that goes in the final "Sources Consulted" section. Two valid reasons:
|
|
117
|
+
|
|
118
|
+
- **No MCP is available for that category** in this environment. Flag this as a gap, not a choice. Example: "Real-time team chat skipped. No matching MCP available, so the conversational record was not searchable."
|
|
119
|
+
- **The source is provably irrelevant**, not just "probably irrelevant." A high bar. Example: "Error / exception tracking skipped. Target is a build-time script with no runtime code path."
|
|
120
|
+
|
|
121
|
+
If your scope assessment suggests a single-commit trivial target where the PR description already contains the complete answer, you may answer inline **only after** confirming all seven available category searches would be redundant. Say so explicitly. This should be rare.
|
|
122
|
+
|
|
123
|
+
## Step 4. Synthesize
|
|
124
|
+
|
|
125
|
+
Spawn one synthesizer subagent:
|
|
126
|
+
|
|
127
|
+
- `subagent_type`: `generalPurpose`
|
|
128
|
+
- `model`: the `why synthesizer` line, default `claude-opus-5-5-max`
|
|
129
|
+
- `readonly`: `false` (agent mode). The synthesizer's quality check spot-verifies citations, which can require MCP access. Readonly/Ask mode strips MCPs and defeats that.
|
|
130
|
+
|
|
131
|
+
The synthesizer gets:
|
|
132
|
+
1. The investigator findings, including any null results and any categories skipped with justification
|
|
133
|
+
2. The code anchor from Step 2 (file paths, symbols, commit hashes, PR numbers, ticket IDs)
|
|
134
|
+
3. The user's original question
|
|
135
|
+
4. The epistemics framework from `references/epistemics.md`
|
|
136
|
+
5. The synthesizer prompt template from `references/synthesizer-prompt.md`
|
|
137
|
+
|
|
138
|
+
## Step 5. Present
|
|
139
|
+
|
|
140
|
+
Take the synthesizer's output and present it to the user. You may lightly edit for clarity or add context from the conversation, but **do not rewrite the confidence language**.
|
|
141
|
+
|
|
142
|
+
## Output Format
|
|
143
|
+
|
|
144
|
+
The output structure is the one in `references/synthesizer-prompt.md`: The Question, The Code in Question, What We Found, What We Can Reasonably Infer, Competing Hypotheses, What We Don't Know, Sources Consulted, Confidence Summary. Adapt as needed, but keep the confidence separation intact, and keep Sources Consulted as one line per investigator, including the ones that returned nothing or were skipped, with the reason.
|
|
145
|
+
|
|
146
|
+
After the Sources Consulted block, if the user's `why` question is a precursor to actually changing this code, convert the lineage findings into a Preserve / Change / Avoid / Risk constraint set suitable for planning the change.
|
|
147
|
+
|
|
148
|
+
## Common Failure Modes to Avoid
|
|
149
|
+
|
|
150
|
+
- **Recency bias**. Assuming the most recent commit is authoritative. The current shape is often the accretion of many earlier decisions. Trace back.
|
|
151
|
+
|
|
152
|
+
## Reference Files
|
|
153
|
+
|
|
154
|
+
- `references/epistemics.md`. Confidence tiers and phrasing guide. The synthesizer must follow it.
|
|
155
|
+
- `references/investigator-prompt.md`. Base prompt template for investigator subagents.
|
|
156
|
+
- `references/source-playbook.md`. Index pointing at the category playbooks below.
|
|
157
|
+
- `references/sources/*.md`. One self-contained example playbook per category, plus cross-cutting `incident-postmortem.md`. Give an investigator the single file that matches its category and adapt it to the available MCP.
|
|
158
|
+
- `references/synthesizer-prompt.md`. Prompt template for the synthesizer subagent, including the output format.
|