@xgent-ai/skills 0.3.0 → 0.4.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 +94 -10
- package/bin/xgent-skills.js +55 -9
- package/package.json +1 -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 +24 -19
- 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 +4 -0
- 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,72 @@
|
|
|
1
|
+
# 差异报告与交接合同
|
|
2
|
+
|
|
3
|
+
## 落盘
|
|
4
|
+
|
|
5
|
+
- 默认将完整 Markdown 报告保存到用户指定路径;未指定时放在原开发计划旁,命名为 `<原计划名>.prd-dev-gaps.md`。仅有远程/聊天输入时,遵循仓库报告目录惯例,无惯例则用 `docs/reviews/<主题>.prd-dev-gaps.md`。
|
|
6
|
+
- 按需建目录。已授权更新本报告时就地更新;否则同名文件存在则用日期后缀、再用递增序号,保留旧文件并告知实际路径。不得覆盖输入文档。
|
|
7
|
+
- Triage 前先保存已有核查结果和待决问题;回答到达后在同一报告更新决策和去向,计划交付后补真实链接。恢复会话时先读报告、确认基线与已有决定,避免重复询问。
|
|
8
|
+
- 用户明确仅聊天/不写文件时在聊天中交付完整内容,该限制同时传给 `dev-plan`。工具不能写入或写入失败时说明「未落盘」及原因,保留完整内容和未完成项,不链接不存在的文件。
|
|
9
|
+
|
|
10
|
+
## 报告结构
|
|
11
|
+
|
|
12
|
+
### 1. 结论与范围
|
|
13
|
+
|
|
14
|
+
写明审查阶段、整体覆盖情况、A/B/C 数量、C 中已决/待决数量、证据不足数量、需跟进数量。无某类写 0;数量按独立 G-ID 统计,不能把需求数、差异数和任务数混算。
|
|
15
|
+
|
|
16
|
+
整体结论可并列「存在明确遗漏」「存在合理变更」「待用户决策」「待补证」。只有范围内需求逐项核实且无缺口时,才能说在注明的基线和证据范围内已覆盖;报告完成与产品交付完成分开表述。
|
|
17
|
+
|
|
18
|
+
### 2. 三类差异
|
|
19
|
+
|
|
20
|
+
按 A 明确遗漏、B 合理变更、C 需 Triage 分组;组内按用户影响与依赖优先,无需机械打分。每项保留:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
#### G-01 · <具体差异> · <A/B/C>
|
|
24
|
+
- PRD 期望:<需求/验收 ID,文件与章节/行定位>
|
|
25
|
+
- 实际交付:<触发条件、可观察行为、与期望的差别>
|
|
26
|
+
- 证据链:<计划里程碑 → 完成记录 → 代码/测试/运行证据;缺失环节明说>
|
|
27
|
+
- 影响:<角色、场景、后果、是否阻塞主路径/验收>
|
|
28
|
+
- 分类依据:<为什么是本类;B 附约束、备选取舍、目标等价或批准依据>
|
|
29
|
+
- 处置:<补齐/保留/替代/延期/豁免/待决;关联 D-ID>
|
|
30
|
+
- Follow-up:<最小增量及可观察验收,或无动作理由;后续计划任务定位>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
只引用亲自读过的段落、代码符号和实际证据;短行定位或稳定标题可点击跳转。文档中互相冲突的主张同时列出处,不能选择方便的版本当真。去重不丢掉受影响的需求与场景。
|
|
34
|
+
|
|
35
|
+
### 3. 完整需求覆盖账本
|
|
36
|
+
|
|
37
|
+
| PRD 需求/验收及定位 | 本期范围/已批准变更 | 计划与里程碑 | 完成记录 | 实际行为与证据等级 | 覆盖状态 | G-ID/去向 |
|
|
38
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
39
|
+
|
|
40
|
+
覆盖状态使用「已满足 / 部分满足 / 未满足 / 已确认变更 / 范围外 / 未核实」。这是实现覆盖,不是差异分类。无计划落点的需求也必须保留该行;不可访问的材料写明不可访问,不填「无」暗示不存在。
|
|
41
|
+
|
|
42
|
+
一条 PRD 可能拆为多个可验收条件,多条 PRD 也可能共享同一根因差异;保留双向关联。跨期需求记录本期边界、后续去向与最终验收,不用局部完成代表整体交付。
|
|
43
|
+
|
|
44
|
+
### 4. Triage 与决策账本
|
|
45
|
+
|
|
46
|
+
待决区保存主技能要求的问题卡,含期望、实际、原因、影响、选项及后果。已决区记录:
|
|
47
|
+
|
|
48
|
+
| 决策 ID | 关联 G-ID | 用户选择与理由 | 确认日期与来源 | 新目标/验收边界 | 跟进/延期/豁免去向 |
|
|
49
|
+
| --- | --- | --- | --- | --- | --- |
|
|
50
|
+
|
|
51
|
+
未回答或明确稍后决定时不生成「已确认」条目。已有历史决定注明来源;新回答摘要必须保持原意。改变已有决定时标注替代关系,不能默默覆盖。
|
|
52
|
+
|
|
53
|
+
### 5. 待核实项与审查基线
|
|
54
|
+
|
|
55
|
+
- 列出每项缺失事实/材料、影响的需求与结论、补证方式以及是否阻塞分类、决策或计划;未知负责人/日期不编造。
|
|
56
|
+
- 记录 PRD/计划/记录版本、代码仓 commit/dirty、日期、环境、实际审查范围及验证方式。只列影响结论的来源,不堆读取日志。
|
|
57
|
+
- 历史测试、当前静态检查、本次实测、线上验证分别标注;完成记录与当前实现不一致时解释基线差异,无法解释则待核实。
|
|
58
|
+
|
|
59
|
+
### 6. Follow-up 与 gaps plan
|
|
60
|
+
|
|
61
|
+
| G-ID / D-ID / PRD ID | 确定的增量工作 | 验收条件 | 依赖/阻塞 | gaps plan 任务或排除去向 |
|
|
62
|
+
| --- | --- | --- | --- | --- |
|
|
63
|
+
|
|
64
|
+
报告保留问题和决策的完整依据;计划承接最终目标、增量实施和验收,通过来源链接关联,避免复制整份报告。记录计划实际路径与 `Ready / Proposed / Blocked` 状态,或无需计划的理由;技能缺失、待用户决定、写入失败等分别标明受阻环节,不能以清单代替声称完成的计划。
|
|
65
|
+
|
|
66
|
+
## 交付前核对
|
|
67
|
+
|
|
68
|
+
- PRD 每个范围内的需求/验收均有覆盖行;原计划漏项仍能被发现。
|
|
69
|
+
- 三类判定有依据,未知不算遗漏,未经确认的产品降级不算合理变更。
|
|
70
|
+
- 每个 C 有待决问题或明确决策,每个待核实项有补证办法。
|
|
71
|
+
- 每个应跟进项有计划去向或具体阻塞;豁免、延期与无需动作有理由。
|
|
72
|
+
- 报告和计划均已回读,链接、状态、范围与决策一致;未决项未混入 Ready 计划的实施假设。
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-audit
|
|
3
|
+
description: 'AI-powered codebase security scanner that reasons about code like a security researcher — tracing data flows, understanding component interactions, and catching vulnerabilities that pattern-matching tools miss. Use this skill when asked to scan code for security vulnerabilities, find bugs, check for SQL injection, XSS, command injection, exposed API keys, hardcoded secrets, insecure dependencies, access control issues, or any request like "is my code secure?", "review for security issues", "audit this codebase", or "check for vulnerabilities". Also use proactively for a security check of changed code before a commit or deployment — especially changes to auth, API, database, dependency, or config files. Covers the OWASP Top 10: injection flaws, authentication and access control bugs, secrets exposure, weak cryptography, security misconfiguration, insecure dependencies, and business logic issues across JavaScript, TypeScript, Python, Java, PHP, Go, Ruby, and Rust.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security Review
|
|
7
|
+
|
|
8
|
+
An AI-powered security scanner that reasons about your codebase the way a human security
|
|
9
|
+
researcher would — tracing data flows, understanding component interactions, and catching
|
|
10
|
+
vulnerabilities that pattern-matching tools miss.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
Use this skill when the request involves:
|
|
15
|
+
|
|
16
|
+
- Scanning a codebase or file for security vulnerabilities
|
|
17
|
+
- Running a security review or vulnerability check
|
|
18
|
+
- Checking changed code before a commit or deployment — especially auth, API, database,
|
|
19
|
+
dependency, or config changes
|
|
20
|
+
- Checking for SQL injection, XSS, command injection, or other injection flaws
|
|
21
|
+
- Finding exposed API keys, hardcoded secrets, or credentials in code
|
|
22
|
+
- Auditing dependencies for known CVEs
|
|
23
|
+
- Reviewing authentication, authorization, or access control logic
|
|
24
|
+
- Detecting insecure cryptography or weak randomness
|
|
25
|
+
- Performing a data flow analysis to trace user input to dangerous sinks
|
|
26
|
+
- Any request phrasing like "is my code secure?", "scan this file", or "check my repo for vulnerabilities"
|
|
27
|
+
- Running `/security-review` or `/security-review <path>`
|
|
28
|
+
|
|
29
|
+
## How This Skill Works
|
|
30
|
+
|
|
31
|
+
Unlike traditional static analysis tools that match patterns, this skill:
|
|
32
|
+
1. **Reads code like a security researcher** — understanding context, intent, and data flow
|
|
33
|
+
2. **Traces across files** — following how user input moves through your application
|
|
34
|
+
3. **Self-verifies findings** — re-examines each result to filter false positives
|
|
35
|
+
4. **Assigns severity ratings** — CRITICAL / HIGH / MEDIUM / LOW / INFO
|
|
36
|
+
5. **Proposes targeted patches** — every finding includes a concrete fix
|
|
37
|
+
6. **Requires human approval** — nothing is auto-applied; you always review first
|
|
38
|
+
|
|
39
|
+
## Execution Workflow
|
|
40
|
+
|
|
41
|
+
Follow these steps **in order** every time:
|
|
42
|
+
|
|
43
|
+
### Step 1 — Scope Resolution
|
|
44
|
+
Determine what to scan:
|
|
45
|
+
- If a path was provided (`/security-review src/auth/`), scan only that scope
|
|
46
|
+
- If the request is about changes (a diff, staged files, a pre-commit or pre-deploy check),
|
|
47
|
+
scope to the changed files (`git diff`, `git diff --staged`). Still read the surrounding code
|
|
48
|
+
they call into or are called from — a change is often only exploitable in context. Run
|
|
49
|
+
Step 2 only if a dependency manifest or lock file changed
|
|
50
|
+
- If no path given, scan the **entire project** starting from the root
|
|
51
|
+
- Identify the language(s) and framework(s) in use (check package.json, requirements.txt,
|
|
52
|
+
go.mod, Cargo.toml, pom.xml, Gemfile, composer.json, etc.)
|
|
53
|
+
- Read `references/language-patterns.md` to load language-specific vulnerability patterns
|
|
54
|
+
|
|
55
|
+
### Step 2 — Dependency Audit
|
|
56
|
+
Before scanning source code, audit dependencies first (fast wins):
|
|
57
|
+
- **Node.js**: Check `package.json` + `package-lock.json` for known vulnerable packages
|
|
58
|
+
- **Python**: Check `requirements.txt` / `pyproject.toml` / `Pipfile`
|
|
59
|
+
- **Java**: Check `pom.xml` / `build.gradle`
|
|
60
|
+
- **Ruby**: Check `Gemfile.lock`
|
|
61
|
+
- **Rust**: Check `Cargo.toml`
|
|
62
|
+
- **Go**: Check `go.sum`
|
|
63
|
+
- If available, run the ecosystem's audit tool (`npm audit`, `pip-audit`, or equivalent) — it
|
|
64
|
+
reflects current advisories. These tools need network access to the package registry; if
|
|
65
|
+
it's unavailable, fall back to the watchlist below and say the audit was offline
|
|
66
|
+
- Flag packages with known CVEs, deprecated crypto libs, or suspiciously old pinned versions
|
|
67
|
+
- Read `references/vulnerable-packages.md` for a curated watchlist
|
|
68
|
+
|
|
69
|
+
### Step 3 — Secrets & Exposure Scan
|
|
70
|
+
Scan ALL files in scope (including config, env, CI/CD, Dockerfiles, IaC) for:
|
|
71
|
+
- Hardcoded API keys, tokens, passwords, private keys
|
|
72
|
+
- `.env` files accidentally committed
|
|
73
|
+
- Secrets in comments or debug logs
|
|
74
|
+
- Cloud credentials (AWS, GCP, Azure, Stripe, Twilio, etc.)
|
|
75
|
+
- Database connection strings with credentials embedded
|
|
76
|
+
- Read `references/secret-patterns.md` for regex patterns and entropy heuristics to apply
|
|
77
|
+
|
|
78
|
+
### Step 4 — Vulnerability Deep Scan
|
|
79
|
+
This is the core scan. Reason about the code — don't just pattern-match.
|
|
80
|
+
Read `references/vuln-categories.md` for full details on each category.
|
|
81
|
+
|
|
82
|
+
**Injection Flaws**
|
|
83
|
+
- SQL Injection: raw queries with string interpolation, ORM misuse, second-order SQLi
|
|
84
|
+
- XSS: unescaped output, dangerouslySetInnerHTML, innerHTML, template injection
|
|
85
|
+
- Command Injection: exec/spawn/system with user input
|
|
86
|
+
- LDAP, XPath, Header, Log injection
|
|
87
|
+
|
|
88
|
+
**Authentication & Access Control**
|
|
89
|
+
- Missing authentication on sensitive endpoints
|
|
90
|
+
- Broken object-level authorization (BOLA/IDOR)
|
|
91
|
+
- JWT weaknesses (alg:none, weak secrets, no expiry validation)
|
|
92
|
+
- Session fixation, missing CSRF protection
|
|
93
|
+
- Session cookies missing `Secure` / `HttpOnly` / `SameSite`
|
|
94
|
+
- Passwords stored in plaintext or with a fast hash; weak password policy; no MFA on
|
|
95
|
+
privileged accounts
|
|
96
|
+
- Privilege escalation paths
|
|
97
|
+
- Mass assignment / parameter pollution
|
|
98
|
+
|
|
99
|
+
**Data Handling**
|
|
100
|
+
- Sensitive data in logs, error messages, or API responses
|
|
101
|
+
- Missing encryption at rest or in transit
|
|
102
|
+
- Insecure deserialization
|
|
103
|
+
- Path traversal / directory traversal
|
|
104
|
+
- XXE (XML External Entity) processing
|
|
105
|
+
- SSRF (Server-Side Request Forgery)
|
|
106
|
+
|
|
107
|
+
**Cryptography**
|
|
108
|
+
- Use of MD5, SHA1, DES for security purposes
|
|
109
|
+
- Hardcoded IVs or salts
|
|
110
|
+
- Weak random number generation (Math.random() for tokens)
|
|
111
|
+
- Missing TLS certificate validation
|
|
112
|
+
|
|
113
|
+
**Security Misconfiguration & Logging**
|
|
114
|
+
- Permissive CORS, debug mode in production, missing security headers
|
|
115
|
+
(framework specifics in `references/language-patterns.md`)
|
|
116
|
+
- Security events (failed logins, access-control denials, privilege changes) not logged,
|
|
117
|
+
leaving attacks undetectable
|
|
118
|
+
|
|
119
|
+
**Business Logic**
|
|
120
|
+
- Race conditions (TOCTOU)
|
|
121
|
+
- Integer overflow in financial calculations
|
|
122
|
+
- Missing rate limiting on sensitive endpoints
|
|
123
|
+
- Predictable resource identifiers
|
|
124
|
+
|
|
125
|
+
### Step 5 — Cross-File Data Flow Analysis
|
|
126
|
+
After the per-file scan, perform a **holistic review**:
|
|
127
|
+
- Trace user-controlled input from entry points (HTTP params, headers, body, file uploads)
|
|
128
|
+
all the way to sinks (DB queries, exec calls, HTML output, file writes)
|
|
129
|
+
- Identify vulnerabilities that only appear when looking at multiple files together
|
|
130
|
+
- Check for insecure trust boundaries between services or modules
|
|
131
|
+
|
|
132
|
+
### Step 6 — Self-Verification Pass
|
|
133
|
+
For EACH finding:
|
|
134
|
+
1. Re-read the relevant code with fresh eyes
|
|
135
|
+
2. Ask: "Is this actually exploitable, or is there sanitization I missed?"
|
|
136
|
+
3. Check if a framework or middleware already handles this upstream
|
|
137
|
+
4. Downgrade or discard findings that aren't genuine vulnerabilities
|
|
138
|
+
5. Assign final severity: CRITICAL / HIGH / MEDIUM / LOW / INFO
|
|
139
|
+
|
|
140
|
+
### Step 7 — Generate Security Report
|
|
141
|
+
Output the full report in the format defined in `references/report-format.md`.
|
|
142
|
+
For a snippet or diff scope, drop sections that don't apply (e.g. the dependency audit when
|
|
143
|
+
no manifest changed) rather than filling them with zeros.
|
|
144
|
+
|
|
145
|
+
### Step 8 — Propose Patches
|
|
146
|
+
For every CRITICAL and HIGH finding, generate a concrete patch:
|
|
147
|
+
- Show the vulnerable code (before)
|
|
148
|
+
- Show the fixed code (after)
|
|
149
|
+
- Explain what changed and why
|
|
150
|
+
- Preserve the original code style, variable names, and structure
|
|
151
|
+
- Add a comment explaining the fix inline
|
|
152
|
+
|
|
153
|
+
Explicitly state: **"Review each patch before applying. Nothing has been changed yet."**
|
|
154
|
+
|
|
155
|
+
## Severity Guide
|
|
156
|
+
|
|
157
|
+
| Severity | Meaning | Example |
|
|
158
|
+
|----------|---------|---------|
|
|
159
|
+
| 🔴 CRITICAL | Immediate exploitation risk, data breach likely | SQLi, RCE, auth bypass |
|
|
160
|
+
| 🟠 HIGH | Serious vulnerability, exploit path exists | XSS, IDOR, hardcoded secrets |
|
|
161
|
+
| 🟡 MEDIUM | Exploitable with conditions or chaining | CSRF, open redirect, weak crypto |
|
|
162
|
+
| 🔵 LOW | Best practice violation, low direct risk | Verbose errors, missing headers |
|
|
163
|
+
| ⚪ INFO | Observation worth noting, not a vulnerability | Outdated dependency (no CVE) |
|
|
164
|
+
|
|
165
|
+
## Output Rules
|
|
166
|
+
|
|
167
|
+
- **Always** produce a findings summary table first (counts by severity)
|
|
168
|
+
- **Never** auto-apply any patch — present patches for human review only
|
|
169
|
+
- **Always** include a confidence rating per finding (High / Medium / Low)
|
|
170
|
+
- **Group findings** by category, not by file
|
|
171
|
+
- **Be specific** — include file path, line number, and the exact vulnerable code snippet
|
|
172
|
+
- **Explain the risk** in plain English — what could an attacker do with this?
|
|
173
|
+
- If the codebase is clean, say so clearly: "No vulnerabilities found" with what was scanned
|
|
174
|
+
|
|
175
|
+
## Reference Files
|
|
176
|
+
|
|
177
|
+
For detailed detection guidance, load the following reference files as needed:
|
|
178
|
+
|
|
179
|
+
- `references/vuln-categories.md` — Deep reference for every vulnerability category with detection signals, safe patterns, and escalation checkers
|
|
180
|
+
- Search patterns: `SQL injection`, `XSS`, `command injection`, `SSRF`, `BOLA`, `IDOR`, `JWT`, `CSRF`, `secrets`, `cryptography`, `race condition`, `path traversal`
|
|
181
|
+
- `references/secret-patterns.md` — Regex patterns, entropy-based detection, and CI/CD secret risks
|
|
182
|
+
- Search patterns: `API key`, `token`, `private key`, `connection string`, `entropy`, `.env`, `GitHub Actions`, `Docker`, `Terraform`
|
|
183
|
+
- `references/language-patterns.md` — Framework-specific vulnerability patterns for JavaScript, Python, Java, PHP, Go, Ruby, and Rust
|
|
184
|
+
- Search patterns: `Express`, `React`, `Next.js`, `Django`, `Flask`, `FastAPI`, `Spring Boot`, `PHP`, `Go`, `Rails`, `Rust`
|
|
185
|
+
- `references/vulnerable-packages.md` — Curated CVE watchlist for npm, pip, Maven, Rubygems, Cargo, and Go modules
|
|
186
|
+
- Search patterns: `lodash`, `axios`, `jsonwebtoken`, `Pillow`, `log4j`, `nokogiri`, `CVE`
|
|
187
|
+
- `references/report-format.md` — Structured output template for security reports with finding cards, dependency audit, secrets scan, and patch proposal formatting
|
|
188
|
+
- Search patterns: `report`, `format`, `template`, `finding`, `patch`, `summary`, `confidence`
|
|
189
|
+
|
|
190
|
+
External references for each finding's Reference line:
|
|
191
|
+
[OWASP Top 10](https://owasp.org/www-project-top-ten/), [CWE Top 25](https://cwe.mitre.org/top25/)
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Language-Specific Vulnerability Patterns
|
|
2
|
+
|
|
3
|
+
Load the relevant section during Step 1 (Scope Resolution) after identifying languages.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## JavaScript / TypeScript (Node.js, React, Next.js, Express)
|
|
8
|
+
|
|
9
|
+
### Critical APIs/calls to flag
|
|
10
|
+
```js
|
|
11
|
+
eval() // arbitrary code execution
|
|
12
|
+
Function('return ...') // same as eval
|
|
13
|
+
child_process.exec() // command injection if user input reaches it
|
|
14
|
+
fs.readFile // path traversal if user controls path
|
|
15
|
+
fs.writeFile // path traversal if user controls path
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Express.js specific
|
|
19
|
+
```js
|
|
20
|
+
// Missing helmet (security headers)
|
|
21
|
+
const app = express()
|
|
22
|
+
// Should have: app.use(helmet())
|
|
23
|
+
|
|
24
|
+
// Body size limits missing (DoS)
|
|
25
|
+
app.use(express.json())
|
|
26
|
+
// Should have: app.use(express.json({ limit: '10kb' }))
|
|
27
|
+
|
|
28
|
+
// CORS misconfiguration
|
|
29
|
+
app.use(cors({ origin: '*' })) // too permissive
|
|
30
|
+
app.use(cors({ origin: req.headers.origin })) // reflects any origin
|
|
31
|
+
|
|
32
|
+
// Trust proxy without validation
|
|
33
|
+
app.set('trust proxy', true) // only safe behind known proxy
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### React specific
|
|
37
|
+
```jsx
|
|
38
|
+
<div dangerouslySetInnerHTML={{ __html: userContent }} /> // XSS
|
|
39
|
+
<a href={userUrl}>link</a> // javascript: URL injection
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Next.js specific
|
|
43
|
+
```js
|
|
44
|
+
// Server Actions without auth
|
|
45
|
+
export async function deleteUser(id) { // missing: auth check
|
|
46
|
+
await db.users.delete(id)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// API Routes missing method validation
|
|
50
|
+
export default function handler(req, res) {
|
|
51
|
+
// Should check: if (req.method !== 'POST') return res.status(405)
|
|
52
|
+
doSensitiveAction()
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Python (Django, Flask, FastAPI)
|
|
59
|
+
|
|
60
|
+
### Django specific
|
|
61
|
+
```python
|
|
62
|
+
# Raw SQL
|
|
63
|
+
User.objects.raw(f"SELECT * FROM users WHERE name = '{name}'") # SQLi
|
|
64
|
+
|
|
65
|
+
# Missing CSRF
|
|
66
|
+
@csrf_exempt # Only OK for APIs with token auth
|
|
67
|
+
|
|
68
|
+
# Debug mode in production
|
|
69
|
+
DEBUG = True # in settings.py — exposes stack traces
|
|
70
|
+
|
|
71
|
+
# SECRET_KEY
|
|
72
|
+
SECRET_KEY = 'django-insecure-...' # must be changed for production
|
|
73
|
+
|
|
74
|
+
# ALLOWED_HOSTS
|
|
75
|
+
ALLOWED_HOSTS = ['*'] # too permissive
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Flask specific
|
|
79
|
+
```python
|
|
80
|
+
# Debug mode
|
|
81
|
+
app.run(debug=True) # never in production
|
|
82
|
+
|
|
83
|
+
# Secret key
|
|
84
|
+
app.secret_key = 'dev' # weak
|
|
85
|
+
|
|
86
|
+
# eval/exec with user input
|
|
87
|
+
eval(request.args.get('expr'))
|
|
88
|
+
|
|
89
|
+
# render_template_string with user input (SSTI)
|
|
90
|
+
render_template_string(f"Hello {name}") # Server-Side Template Injection
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### FastAPI specific
|
|
94
|
+
```python
|
|
95
|
+
# Missing auth dependency
|
|
96
|
+
@app.delete("/users/{user_id}") # No Depends(get_current_user)
|
|
97
|
+
async def delete_user(user_id: int):
|
|
98
|
+
...
|
|
99
|
+
|
|
100
|
+
# Arbitrary file read
|
|
101
|
+
@app.get("/files/{filename}")
|
|
102
|
+
async def read_file(filename: str):
|
|
103
|
+
return FileResponse(f"uploads/{filename}") # path traversal
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Java (Spring Boot)
|
|
109
|
+
|
|
110
|
+
### Spring Boot specific
|
|
111
|
+
```java
|
|
112
|
+
// SQL Injection
|
|
113
|
+
String query = "SELECT * FROM users WHERE name = '" + name + "'";
|
|
114
|
+
jdbcTemplate.query(query, ...);
|
|
115
|
+
|
|
116
|
+
// XXE
|
|
117
|
+
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
|
118
|
+
// Missing: dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
|
|
119
|
+
|
|
120
|
+
// Deserialization
|
|
121
|
+
ObjectInputStream ois = new ObjectInputStream(inputStream);
|
|
122
|
+
Object obj = ois.readObject(); // only safe with allowlist
|
|
123
|
+
|
|
124
|
+
// Spring Security — permitAll on sensitive endpoint
|
|
125
|
+
.antMatchers("/admin/**").permitAll()
|
|
126
|
+
|
|
127
|
+
// Actuator endpoints exposed
|
|
128
|
+
management.endpoints.web.exposure.include=* # in application.properties
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## PHP
|
|
134
|
+
|
|
135
|
+
```php
|
|
136
|
+
// Direct user input in queries
|
|
137
|
+
$result = mysql_query("SELECT * FROM users WHERE id = " . $_GET['id']);
|
|
138
|
+
|
|
139
|
+
// File inclusion
|
|
140
|
+
include($_GET['page'] . ".php"); // local/remote file inclusion
|
|
141
|
+
|
|
142
|
+
// eval
|
|
143
|
+
eval($_POST['code']);
|
|
144
|
+
|
|
145
|
+
// extract() with user input
|
|
146
|
+
extract($_POST); // overwrites any variable
|
|
147
|
+
|
|
148
|
+
// Loose comparison
|
|
149
|
+
if ($password == "admin") {} // use === instead
|
|
150
|
+
|
|
151
|
+
// Unserialize
|
|
152
|
+
unserialize($_COOKIE['data']); // remote code execution
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Go
|
|
158
|
+
|
|
159
|
+
```go
|
|
160
|
+
// Command injection
|
|
161
|
+
exec.Command("sh", "-c", userInput)
|
|
162
|
+
|
|
163
|
+
// SQL injection
|
|
164
|
+
db.Query("SELECT * FROM users WHERE name = '" + name + "'")
|
|
165
|
+
|
|
166
|
+
// Path traversal
|
|
167
|
+
filePath := filepath.Join("/uploads/", userInput) // sanitize userInput first
|
|
168
|
+
|
|
169
|
+
// Insecure TLS
|
|
170
|
+
http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
|
|
171
|
+
|
|
172
|
+
// Goroutine leak / missing context cancellation
|
|
173
|
+
go func() {
|
|
174
|
+
// No done channel or context
|
|
175
|
+
for { ... }
|
|
176
|
+
}()
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Ruby on Rails
|
|
182
|
+
|
|
183
|
+
```ruby
|
|
184
|
+
# SQL injection (safe alternatives use placeholders)
|
|
185
|
+
User.where("name = '#{params[:name]}'") # VULNERABLE
|
|
186
|
+
User.where("name = ?", params[:name]) # SAFE
|
|
187
|
+
|
|
188
|
+
# Mass assignment without strong params
|
|
189
|
+
@user.update(params[:user]) # should be params.require(:user).permit(...)
|
|
190
|
+
|
|
191
|
+
# eval / send with user input
|
|
192
|
+
eval(params[:code])
|
|
193
|
+
send(params[:method]) # arbitrary method call
|
|
194
|
+
|
|
195
|
+
# Redirect to user-supplied URL (open redirect)
|
|
196
|
+
redirect_to params[:url]
|
|
197
|
+
|
|
198
|
+
# YAML.load (allows arbitrary object creation)
|
|
199
|
+
YAML.load(user_input) # use YAML.safe_load instead
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Rust
|
|
205
|
+
|
|
206
|
+
```rust
|
|
207
|
+
// Unsafe blocks — flag for manual review
|
|
208
|
+
unsafe {
|
|
209
|
+
// Reason for unsafety should be documented
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Integer overflow (debug builds panic, release silently wraps)
|
|
213
|
+
let result = a + b; // use checked_add/saturating_add for financial math
|
|
214
|
+
|
|
215
|
+
// Unwrap/expect in production code (panics on None/Err)
|
|
216
|
+
let value = option.unwrap(); // prefer ? or match
|
|
217
|
+
|
|
218
|
+
// Deserializing arbitrary types
|
|
219
|
+
serde_json::from_str::<serde_json::Value>(&user_input) // generally safe
|
|
220
|
+
// But: bincode::deserialize from untrusted input — can be exploited
|
|
221
|
+
```
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Security Report Format
|
|
2
|
+
|
|
3
|
+
Use this template for all `/security-review` output. Generated during Step 7.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Report Structure
|
|
8
|
+
|
|
9
|
+
### Header
|
|
10
|
+
```
|
|
11
|
+
╔══════════════════════════════════════════════════════════╗
|
|
12
|
+
║ 🔐 SECURITY REVIEW REPORT ║
|
|
13
|
+
║ Generated by: /security-review skill ║
|
|
14
|
+
╚══════════════════════════════════════════════════════════╝
|
|
15
|
+
|
|
16
|
+
Project: <project name or path>
|
|
17
|
+
Scan Date: <today's date>
|
|
18
|
+
Scope: <files/directories scanned>
|
|
19
|
+
Languages Detected: <list>
|
|
20
|
+
Frameworks Detected: <list>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### Executive Summary Table
|
|
26
|
+
|
|
27
|
+
Always show this first — at a glance overview:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
┌────────────────────────────────────────────────┐
|
|
31
|
+
│ FINDINGS SUMMARY │
|
|
32
|
+
├──────────────┬──────────────────────────────── ┤
|
|
33
|
+
│ 🔴 CRITICAL │ <n> findings │
|
|
34
|
+
│ 🟠 HIGH │ <n> findings │
|
|
35
|
+
│ 🟡 MEDIUM │ <n> findings │
|
|
36
|
+
│ 🔵 LOW │ <n> findings │
|
|
37
|
+
│ ⚪ INFO │ <n> findings │
|
|
38
|
+
├──────────────┼─────────────────────────────────┤
|
|
39
|
+
│ TOTAL │ <n> findings │
|
|
40
|
+
└──────────────┴─────────────────────────────────┘
|
|
41
|
+
|
|
42
|
+
Dependency Audit: <n> vulnerable packages found
|
|
43
|
+
Secrets Scan: <n> exposed credentials found
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
### Findings (Grouped by Category)
|
|
49
|
+
|
|
50
|
+
For EACH finding, use this card format:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
54
|
+
[SEVERITY EMOJI] [SEVERITY] — [VULNERABILITY TYPE]
|
|
55
|
+
Confidence: HIGH / MEDIUM / LOW
|
|
56
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
|
+
|
|
58
|
+
📍 Location: src/routes/users.js, Line 47
|
|
59
|
+
|
|
60
|
+
🔍 Vulnerable Code:
|
|
61
|
+
const query = `SELECT * FROM users WHERE id = ${req.params.id}`;
|
|
62
|
+
db.execute(query);
|
|
63
|
+
|
|
64
|
+
⚠️ Risk:
|
|
65
|
+
An attacker can manipulate the `id` parameter to execute arbitrary
|
|
66
|
+
SQL commands, potentially dumping the entire database, bypassing
|
|
67
|
+
authentication, or deleting data.
|
|
68
|
+
|
|
69
|
+
Example attack: GET /users/1 OR 1=1--
|
|
70
|
+
|
|
71
|
+
✅ Recommended Fix:
|
|
72
|
+
Use parameterized queries:
|
|
73
|
+
|
|
74
|
+
const query = 'SELECT * FROM users WHERE id = ?';
|
|
75
|
+
db.execute(query, [req.params.id]);
|
|
76
|
+
|
|
77
|
+
📚 Reference: OWASP A03:2021 – Injection
|
|
78
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### Dependency Audit Section
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
📦 DEPENDENCY AUDIT
|
|
87
|
+
══════════════════
|
|
88
|
+
|
|
89
|
+
🟠 HIGH — lodash@4.17.20 (package.json)
|
|
90
|
+
CVE-2021-23337: Prototype pollution via zipObjectDeep()
|
|
91
|
+
Fix: npm install lodash@4.17.21
|
|
92
|
+
|
|
93
|
+
🟡 MEDIUM — axios@0.27.2 (package.json)
|
|
94
|
+
CVE-2023-45857: CSRF via withCredentials
|
|
95
|
+
Fix: npm install axios@1.6.0
|
|
96
|
+
|
|
97
|
+
⚪ INFO — express@4.18.2
|
|
98
|
+
No known CVEs. Current version is 4.19.2 — consider updating.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### Secrets Scan Section
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
🔑 SECRETS & EXPOSURE SCAN
|
|
107
|
+
═══════════════════════════
|
|
108
|
+
|
|
109
|
+
🔴 CRITICAL — Hardcoded API Key
|
|
110
|
+
File: src/config/database.js, Line 12
|
|
111
|
+
|
|
112
|
+
Found: STRIPE_SECRET_KEY = "sk_live_FAKE_KEY_..."
|
|
113
|
+
|
|
114
|
+
Action Required:
|
|
115
|
+
1. Rotate this key IMMEDIATELY at https://dashboard.stripe.com
|
|
116
|
+
2. Remove from source code
|
|
117
|
+
3. Add to .env file and load via process.env.STRIPE_SECRET_KEY
|
|
118
|
+
4. Add .env to .gitignore
|
|
119
|
+
5. Audit git history — key may be in previous commits:
|
|
120
|
+
git log --all -p | grep "sk_live_"
|
|
121
|
+
Use git-filter-repo or BFG to purge from history if found.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Patch Proposals Section
|
|
127
|
+
|
|
128
|
+
Only include for CRITICAL and HIGH findings:
|
|
129
|
+
|
|
130
|
+
````
|
|
131
|
+
🛠️ PATCH PROPOSALS
|
|
132
|
+
══════════════════
|
|
133
|
+
⚠️ REVIEW EACH PATCH BEFORE APPLYING — Nothing has been changed yet.
|
|
134
|
+
|
|
135
|
+
─────────────────────────────────────────────
|
|
136
|
+
Patch 1/3: SQL Injection in src/routes/users.js
|
|
137
|
+
─────────────────────────────────────────────
|
|
138
|
+
|
|
139
|
+
BEFORE (vulnerable):
|
|
140
|
+
```js
|
|
141
|
+
// Line 47
|
|
142
|
+
const query = `SELECT * FROM users WHERE id = ${req.params.id}`;
|
|
143
|
+
db.execute(query);
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
AFTER (fixed):
|
|
147
|
+
```js
|
|
148
|
+
// Line 47 — Fixed: Use parameterized query to prevent SQL injection
|
|
149
|
+
const query = 'SELECT * FROM users WHERE id = ?';
|
|
150
|
+
db.execute(query, [req.params.id]);
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Apply this patch? (Review first — AI-generated patches may need adjustment)
|
|
154
|
+
─────────────────────────────────────────────
|
|
155
|
+
````
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
### Footer
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
══════════════════════════════════════════════════════════
|
|
163
|
+
|
|
164
|
+
📋 SCAN COVERAGE
|
|
165
|
+
Files scanned: <n>
|
|
166
|
+
Lines analyzed: <n>
|
|
167
|
+
Scan duration: <time>
|
|
168
|
+
|
|
169
|
+
⚡ NEXT STEPS
|
|
170
|
+
1. Address all CRITICAL findings immediately
|
|
171
|
+
2. Schedule HIGH findings for current sprint
|
|
172
|
+
3. Add MEDIUM/LOW to your security backlog
|
|
173
|
+
4. Set up automated re-scanning in CI/CD pipelines
|
|
174
|
+
|
|
175
|
+
💡 NOTE: This is a static analysis scan. It does not execute your
|
|
176
|
+
application and cannot detect all runtime vulnerabilities. Pair
|
|
177
|
+
with dynamic testing (DAST) for comprehensive coverage.
|
|
178
|
+
|
|
179
|
+
══════════════════════════════════════════════════════════
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Confidence Ratings Guide
|
|
185
|
+
|
|
186
|
+
Apply to every finding:
|
|
187
|
+
|
|
188
|
+
| Confidence | When to Use |
|
|
189
|
+
|------------|-------------|
|
|
190
|
+
| **HIGH** | Vulnerability is unambiguous. Sanitization is clearly absent. Exploitable as-is. |
|
|
191
|
+
| **MEDIUM** | Vulnerability likely exists but depends on runtime context, config, or call path the agent couldn't fully trace. |
|
|
192
|
+
| **LOW** | Suspicious pattern detected but could be a false positive. Flag for human review. |
|
|
193
|
+
|
|
194
|
+
Never omit confidence — it helps developers prioritize their review effort.
|