@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PRD 骨架 · `docs/PRD-<代号>.md`
|
|
2
2
|
|
|
3
|
-
`<尖括号>` 为占位;引用块是写作指引,**写完删掉指引**。示例里的 `docs/PRD-A.md` / `docs/PRD-B.md` 这类具体文件名也是占位——它们在本 repo 里没有对应文件,写作时替换成宿主 repo 的真实 PRD
|
|
3
|
+
`<尖括号>` 为占位;引用块是写作指引,**写完删掉指引**。示例里的 `docs/PRD-A.md` / `docs/PRD-B.md` 这类具体文件名也是占位——它们在本 repo 里没有对应文件,写作时替换成宿主 repo 的真实 PRD 名。全篇聚焦产品行为、体验与预期状态,不展开技术方案(表/端点/库/技术里程碑)或测试方法。用户只要文档时不要求落库;未录入的新需求用明确工作号,不能伪造 FR/NFR key。
|
|
4
4
|
规模参考:**160–380 行**。范围(§1 目标/非目标)约占 1/4,需求条目(§3)约占 1/2;领域语言、场景与决策只留能改变理解的内容,不为凑篇幅扩写。
|
|
5
5
|
|
|
6
6
|
**架构约定(全篇按此写)**:§0–§6 是**终局蓝图**——目标写终局结果,需求条目写完整能力,一条都不因「这期做不完」提前砍掉或写小。**交付节奏只出现在 §7**,等全局盘完之后一次给出,并逐条标出「终验期」= 整条需求算完成的那一期。跨期需求的终验期要在三处齐:§7.3、该需求 SPMS `description` 开头的终验块、`acceptanceCriteria` 逐行 `[P#]` 前缀。
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
> 先从用户视角说清「谁正被什么阻碍、造成什么影响」,再写现状与为什么是现在。不要把待做功能换个语序当成问题。有数据放数据(多少人/多少次/多少时间)。
|
|
26
26
|
> 调查中读到的现状带路径或出处,与用户假设冲突的地方在这里说清楚。
|
|
27
27
|
|
|
28
|
-
### 1.2
|
|
28
|
+
### 1.2 目标(**终局**、符合 SMAR 的结果,3–5 条封顶)
|
|
29
29
|
|
|
30
|
-
>
|
|
30
|
+
> 写这块能力**做完之后**要达成的结果,不是「首期做到哪」。检查 Specific / Measurable / Actionable / Reasonable;不用 T 编造开发日期。区分验收门槛、观察指标和 PoC 基线,数值注明来源或「待确认的产品提案」,补必要口径。分期在 §7。
|
|
31
31
|
|
|
32
32
|
- G1 <结果句,带判据。例:租户管理员无需联系运维即可完成 X,全流程 ≤ 3 步>
|
|
33
33
|
- G2 …
|
|
@@ -41,6 +41,14 @@
|
|
|
41
41
|
> 这张表是评审的挡箭牌。凡会被问「那 X 呢」的,都要提前出现在这里。
|
|
42
42
|
> ⚠️ **去向里不许出现「二期 / 后期再做」**——那是分期,不是非目标。凡属于这块能力终局蓝图之内的,写成 FR/NFR 进 §3,再到 §7 排到靠后的期次去。
|
|
43
43
|
|
|
44
|
+
### 1.4 产品方向与价值取舍
|
|
45
|
+
|
|
46
|
+
| 设计维度 | 产品选择与用户价值 | 边界/取舍及依据 | 需求落点 |
|
|
47
|
+
| --- | --- | --- | --- |
|
|
48
|
+
| <创新性 / 先进性 / 可用性 / 便捷体验 / 美观 UI / AI 赋能> | <比现状或常规方案改善什么,不只罗列功能> | <约束内为何这样选;重要未选方案与理由> | <FR/NFR key> |
|
|
49
|
+
|
|
50
|
+
> 六个维度都考虑,有实质落点的可合并;不适用则说明理由,不为了填表增加能力。具体推演见 product-quality.md。重要取舍记录在 §5.1,这里保留方向及关联,不重复决策全文。
|
|
51
|
+
|
|
44
52
|
## 2. 领域语言、用户与场景
|
|
45
53
|
|
|
46
54
|
### 2.1 领域语言
|
|
@@ -53,7 +61,7 @@
|
|
|
53
61
|
|
|
54
62
|
### 2.2 用户与权限边界
|
|
55
63
|
|
|
56
|
-
| 角色 | 是谁 |
|
|
64
|
+
| 角色 | 是谁 | 要完成什么任务 | 权限边界 |
|
|
57
65
|
| --- | --- | --- | --- |
|
|
58
66
|
| <租户管理员 / 普通成员 / 学生 / 平台运营> | … | … | <能看到/操作什么,不能看到/操作什么> |
|
|
59
67
|
|
|
@@ -68,11 +76,19 @@
|
|
|
68
76
|
| --- | --- | --- | --- | --- |
|
|
69
77
|
| S1 | <前置> | <动作> | <用户/外部系统可观察结果> | <主路径/权限/租户/空数据/重复/超限/状态/前置,只选命中项> |
|
|
70
78
|
|
|
79
|
+
### 2.4 用户体验与 UI 要求
|
|
80
|
+
|
|
81
|
+
| 入口/任务 | 默认信息与主操作 | 渐进展示与状态反馈 | 视觉要求及验收落点 |
|
|
82
|
+
| --- | --- | --- | --- |
|
|
83
|
+
| <主用户旅程的入口> | <用户首眼要理解什么、下一步做什么> | <哪些详情按需展开;成功/空/失败时的反馈及恢复> | <信息主次、排版/密度/视觉一致性、相关窗口要求;FR/NFR key 与验收行> |
|
|
84
|
+
|
|
85
|
+
> 从首次使用、日常效率和异常恢复设计;美观须有可核对的要求,不只写「现代 UI」或可访问性。沿用宿主设计规范,不在这里指定 CSS/组件实现;无界面产品说明不适用。适用的 AI 能力在相关 FR 中明确触发、输出、用户控制、质量判据和降级状态。
|
|
86
|
+
|
|
71
87
|
## 3. 需求条目
|
|
72
88
|
|
|
73
|
-
> 每条一小节。SPMS key
|
|
89
|
+
> 每条一小节。SPMS key 在创建后回填;**已录入的需求标题和实体引用必须使用真实 FR/NFR key**。未录入的新需求明确标工作号。`R#` 不是需求编号,只在「承接」和 §6.1 作原始诉求来源标识。
|
|
74
90
|
> FR 与 NFR 分开成组(对应 SPMS 的「功能性 / 非功能性」分组)。
|
|
75
|
-
>
|
|
91
|
+
> **每条按完整能力写**——验收标准覆盖本 PRD 范围内这条能力**做完**该有的全部断言,不写「本期版本」。「分期」行是 §7 定稿后回填的,不是写作时先定的。
|
|
76
92
|
|
|
77
93
|
### FR-<N> <标题(动宾短语,一眼看出用户能做什么)>
|
|
78
94
|
|
|
@@ -81,12 +97,12 @@
|
|
|
81
97
|
- **分期**:<P#|跨期写「P1 / P2,**终验期 P2**」>(§7 定稿后回填,与 §7.2 逐字一致)
|
|
82
98
|
- **背景**:<为什么需要这条,一两句>
|
|
83
99
|
- **行为**:<谁在什么场景下能做什么。用户可感知的能力,不写实现。**按完整能力写**,不写「本期先只做…」>
|
|
84
|
-
-
|
|
100
|
+
- **边界**:<本 PRD 能力范围不含什么,其他 PRD 的已明确分工可写去向;容易被误解的地方在这里说明。「这期先不做」写 §7>
|
|
85
101
|
- **依赖**:<依赖别的 App/底座的写明;「未就绪则降级为 X」>
|
|
86
102
|
- **验收标准**(→ SPMS `acceptanceCriteria`,一行一条、无 markdown 语法;断言用户/外部系统可观察的业务结果,不断言内部实现;**跨期需求逐行加 `[P#]` 前缀,单期需求不加**):
|
|
87
103
|
|
|
88
104
|
```
|
|
89
|
-
|
|
105
|
+
<角色>在<条件>下<业务动作>后,<预期状态 + 清晰判据;数值指标附必要口径>
|
|
90
106
|
<边界条件:为空/超限/无权限时的行为>
|
|
91
107
|
<可观测的落点:列表出现该行 / 通知送达 / 审计留痕>
|
|
92
108
|
```
|
|
@@ -94,7 +110,7 @@
|
|
|
94
110
|
> **仅跨期需求**:这条抄进 SPMS `description` 的开头(SPMS 里的读者看不到 PRD,PRD 条目里也留一份)——
|
|
95
111
|
> `> **分期与终验**:本需求跨 P1 / P2 交付,**终验期 = P2**。P1 完成后请停在交付段(已提交 / 可测试),**不要转「已上线」**——「已上线」是整条需求的验收,不是某一期的完工。`
|
|
96
112
|
|
|
97
|
-
-
|
|
113
|
+
- **UAT 场景**:UAT-<#>;对应 S<#> / 验收第 <#> 行;预期状态与通过条件见 §6.3
|
|
98
114
|
|
|
99
115
|
### NFR-<N> <标题(质量属性 + 约束对象)>
|
|
100
116
|
|
|
@@ -102,18 +118,19 @@
|
|
|
102
118
|
- **优先级**:`…`
|
|
103
119
|
- **承接**:原始诉求 R<#> · 目标 G<#> · 场景 S<#…>
|
|
104
120
|
- **分期**:<P#|跨期写「P1 / P2,**终验期 P2**」>(§7 定稿后回填)
|
|
105
|
-
-
|
|
121
|
+
- **重要度**:`critical|high|medium|low|none`
|
|
122
|
+
- **约束**:<作用域与质量门槛。性能/容量带数值与条件,其他属性也可用明确状态或不变量;不写测试工具/步骤。示例阈值不能当成项目已确认承诺>
|
|
106
123
|
- **验收标准**(同上格式,一行一条):
|
|
107
124
|
|
|
108
125
|
```
|
|
109
|
-
|
|
126
|
+
<可判断的结果/不变量;数值指标附作用域和必要条件>
|
|
110
127
|
```
|
|
111
128
|
|
|
112
|
-
-
|
|
129
|
+
- **UAT 场景**:UAT-<#> …;覆盖 S<#> / 验收第 <#> 行
|
|
113
130
|
|
|
114
131
|
## 4. 约束与前提
|
|
115
132
|
|
|
116
|
-
-
|
|
133
|
+
- **用户给定的约束**:<来源明确,仅读过原话才加引号;技术选型作为已给定约束留在本节,不扩写实现设计>
|
|
117
134
|
- **平台硬约束**:<多租户隔离 / 业务错误 200 / 列表服务端分页 / 三语 i18n / 席位与计量 / ACL 可见性——命中哪条写哪条,并说明对本期的具体影响>
|
|
118
135
|
- **既有决策约束**:<相关 ADR/决策记录中对用户可观察行为的约束 + 出处;不抄实现方案。无则写「无」>
|
|
119
136
|
- **前置依赖**:<某 App 或底座就绪与否,未就绪时的降级方案>
|
|
@@ -130,9 +147,9 @@
|
|
|
130
147
|
|
|
131
148
|
### 5.2 开放问题
|
|
132
149
|
|
|
133
|
-
| # | 类型 | 问题与影响 | 当前默认及理由 | 负责人 |
|
|
150
|
+
| # | 类型 | 问题与影响 | 当前默认及理由 | 负责人 | 解决节点 |
|
|
134
151
|
| --- | --- | --- | --- | --- | --- |
|
|
135
|
-
| Q1 | <阻塞/非阻塞> | <问题;不同答案会改变什么> | <非阻塞必填;阻塞项不得靠默认越过> | <谁跟进> |
|
|
152
|
+
| Q1 | <阻塞/非阻塞> | <问题;不同答案会改变什么> | <非阻塞必填;阻塞项不得靠默认越过> | <谁跟进> | <进入哪期计划前;已有外部日期则保留> |
|
|
136
153
|
|
|
137
154
|
> **定稿的 PRD 不得保留阻塞问题。** 会改变用户/权限、范围、FR/NFR 类型、业务语义或验收的都是阻塞问题;尚有这类问题时,文档标「草稿·未落库」,§8 不得宣称已写入 SPMS。定稿时若没有非阻塞开放问题,写「无」。
|
|
138
155
|
|
|
@@ -150,26 +167,35 @@
|
|
|
150
167
|
|
|
151
168
|
> 一条都不许吞。有空白单元格说明需求没梳理干净。
|
|
152
169
|
|
|
153
|
-
### 6.2 目标/场景 → 需求 → 验收 →
|
|
170
|
+
### 6.2 目标/场景 → 需求 → 验收 → UAT 状态
|
|
154
171
|
|
|
155
|
-
| 目标 | 场景 | 承接需求 | 验收落点 |
|
|
172
|
+
| 目标 | 场景 | 承接需求 | 验收落点 | UAT 场景 |
|
|
156
173
|
| --- | --- | --- | --- | --- |
|
|
157
|
-
| G1 | S1 | FR-37 | 验收第 1–2 行 |
|
|
158
|
-
| G2 | S2 / S3 | FR-38 / NFR-9 | 各条验收第 1 行 |
|
|
174
|
+
| G1 | S1 | FR-37 | 验收第 1–2 行 | UAT-1 |
|
|
175
|
+
| G2 | S2 / S3 | FR-38 / NFR-9 | 各条验收第 1 行 | UAT-2 / UAT-3 |
|
|
159
176
|
|
|
160
|
-
>
|
|
177
|
+
> 每个目标有需求承接,每条需求能指回目标/原始诉求,每个关键用户场景有预期状态与验收覆盖。任一格为空就不算定稿;不要求 TC 已存在。
|
|
178
|
+
|
|
179
|
+
### 6.3 UAT 场景预期状态与验收条件
|
|
180
|
+
|
|
181
|
+
| UAT | 角色、前置与场景 | 用户意图/业务动作 | 预期状态 | 通过条件 | 需求与验收落点 |
|
|
182
|
+
| --- | --- | --- | --- | --- | --- |
|
|
183
|
+
| UAT-1 | <角色 + 初始状态;S1> | <业务动作,不写点击/调用脚本> | <结果是否可用、显示什么、允许的下一步、数据是否变化> | <无歧义的是/否、枚举、相等/不变或阈值与口径> | <FR/NFR key + 验收行> |
|
|
184
|
+
| UAT-2 | <相关的空数据/无权/冲突/取消/失败/AI 降级场景> | … | … | … | … |
|
|
185
|
+
|
|
186
|
+
> 只展开影响本产品的状态,不机械全枚举;通过条件引用 §3 的同一口径,不另造门槛。这里不写账号准备、造数、执行步骤、测试工具、探针或注入方法;交 test-plan 再展开。已有 TC 可在交接中引用真实 key,PRD 不创建 TC。
|
|
161
187
|
|
|
162
188
|
## 7. 分期交付建议
|
|
163
189
|
|
|
164
190
|
> **全篇唯一谈交付节奏的地方**——§0–§6 一律按终局写。分期只改变顺序,**不改变需求集合**:这里不删需求、不砍验收标准、不把需求改小。
|
|
165
|
-
>
|
|
191
|
+
> 期次是产品侧建议,技术拆解由 dev-plan 判断。每期开发计划尽量控制在 **5–8 个 Milestone**,因交付连续性可为 **9–10 个**并说明理由,**最多 10 个**;小范围可更少,不凑数。这里只给规模预算,不列 M1…Mn 的实现任务或编造工期;实际超出时反馈拆期并同步完整终验关系。**「终验期」是整条需求何时算完成的口径**,不能只在下游计划里提前。
|
|
166
192
|
|
|
167
193
|
### 7.1 期次总览
|
|
168
194
|
|
|
169
|
-
| 期次 | 这期上线后,哪个角色多了什么以前做不到的事 | 出口判据(引用 §3 验收原话) | 前置 |
|
|
170
|
-
| --- | --- | --- | --- |
|
|
171
|
-
| P1 | <一个能独立交付的用户价值;不是「先做后端」这类技术栈切法> | <这期覆盖到的验收标准行> | <无 / 等某底座就绪 / 等某既有 key 先上> |
|
|
172
|
-
| P2 | … | … | P1 |
|
|
195
|
+
| 期次 | 这期上线后,哪个角色多了什么以前做不到的事 | 出口判据(引用 §3 验收原话) | 前置 | 开发计划规模建议 |
|
|
196
|
+
| --- | --- | --- | --- | --- |
|
|
197
|
+
| P1 | <一个能独立交付的用户价值;不是「先做后端」这类技术栈切法> | <这期覆盖到的验收标准行> | <无 / 等某底座就绪 / 等某既有 key 先上> | <5–8 个 Milestone;由 dev-plan 核实> |
|
|
198
|
+
| P2 | … | … | P1 | <同上;9–10 个须说明连续性理由> |
|
|
173
199
|
|
|
174
200
|
### 7.2 分期矩阵(每条需求都要有一行,含本次更新的既有 key)
|
|
175
201
|
|
|
@@ -182,7 +208,7 @@
|
|
|
182
208
|
| FR-41 | 既有 · 别的 PRD(`docs/PRD-B.md`) | 前置 | — | 不归本 PRD | P1 等它先上;本 PRD 不排它的期 |
|
|
183
209
|
|
|
184
210
|
> **「来源」标签固定用这几种**:本 PRD 新建 / 既有 · 本次更新 / 既有 · 别的 PRD(只作前置) / 既有 · 别的项目(只作前置)。
|
|
185
|
-
> 既有 key 必须是查重时**真命中**的(§6.1
|
|
211
|
+
> 既有 key 必须是查重时**真命中**的(§6.1 有据),不许编造;未录入新需求用工作号并在创建后回填。只作前置的那些不占本 PRD 的终验期。
|
|
186
212
|
|
|
187
213
|
### 7.3 跨期需求终验登记(只列跨期的;没有就写「本期无跨期需求」)
|
|
188
214
|
|
|
@@ -200,19 +226,25 @@
|
|
|
200
226
|
- **终验期随 key 一起交出去**:逐条写明「本计划完成后 FR-38 仍停在交付段,终验在 P2」——只覆盖 P1 的计划里程碑全绿,也不代表跨期需求可以置「已上线」。
|
|
201
227
|
- SPMS 侧落点 `plan_create(projectId, title, requirementKeys=[…])` → `PLAN-N`;⚠️ 一个 `PLAN-N` 只能挂**同一项目**的需求。
|
|
202
228
|
- <若某条与另一份 PRD 的需求天然同批,点名:与 `docs/PRD-B.md` 的 FR-41 动同一块,建议合并一份计划>
|
|
229
|
+
- 每期计划承接 §7.1 的规模预算;拆解为 9–10 个 Milestone 时解释连续性,超过 10 个则反馈拆期。产品交互与预期状态已经定清,具体架构、任务与里程碑在计划期展开。
|
|
230
|
+
|
|
231
|
+
### 7.5 交给 test-plan
|
|
232
|
+
|
|
233
|
+
- 交接需求 key、逐行验收标准、§6.3 UAT 状态与前置依赖。测试计划负责测试方法、数据、步骤、工具、查重及 TC 创建;不得到测试阶段才补决定产品状态。
|
|
234
|
+
- <已有 TC 才列真实关联,无则写「尚未设计测试用例」;不把无 TC 写成 PRD 阻塞>
|
|
203
235
|
|
|
204
236
|
## 8. SPMS 落库结果
|
|
205
237
|
|
|
206
|
-
- **已写入**:FR-37 / FR-38 / NFR-9(均 `status=draft
|
|
238
|
+
- **已写入**:FR-37 / FR-38 / NFR-9(均 `status=draft`);项目「基本信息」<列出本次经 `project_update` 回写的段>
|
|
207
239
|
- **跨期终验声明已写入**:FR-38(`description` 终验块 + `acceptanceCriteria` 逐行 `[P#]` 前缀)<无跨期需求则写「本期无跨期需求」>
|
|
208
240
|
- **待人工补**(MCP 无写面):
|
|
209
241
|
- 各需求的 版本(release);
|
|
210
242
|
- **跨期需求的版本挂终验期那一版**:FR-38 → <终验期对应的版本名>;
|
|
211
243
|
- 评审通过后由人把 `draft → reviewing → approved`。
|
|
212
244
|
|
|
213
|
-
> 重要度(importance) / 负责人(ownerId) / 截止日期(dueDate) **MCP
|
|
245
|
+
> 重要度(importance) / 负责人(ownerId) / 截止日期(dueDate) **MCP 可写**,不进人工补字段清单;负责人已明确才写,日期仅按用户/外部约束填写,不自动制造期限,更新时不清除未要求修改的值。
|
|
214
246
|
|
|
215
|
-
> 若 §5.2
|
|
247
|
+
> 若 §5.2 仍有阻塞问题、用户只要文档或工具不可用,本节如实写「未写入 SPMS」与原因及可交接字段,不得出现虚构 key。
|
|
216
248
|
```
|
|
217
249
|
|
|
218
250
|
---
|
|
@@ -221,24 +253,30 @@
|
|
|
221
253
|
|
|
222
254
|
| 毛病 | 症状 | 改法 |
|
|
223
255
|
| --- | --- | --- |
|
|
224
|
-
| 验收标准是愿望 | 「体验流畅」「性能良好」「操作便捷」 |
|
|
225
|
-
| 需求变方案 |
|
|
226
|
-
| 粒度失控 |
|
|
256
|
+
| 验收标准是愿望 | 「体验流畅」「性能良好」「操作便捷」 | 写清预期状态和可判断条件;数值须有口径,明确状态也可验收 |
|
|
257
|
+
| 需求变方案 | 自行设计表/端点/库选型/技术里程碑 | 挪到 dev-plan;保留产品行为、体验与已给定约束 |
|
|
258
|
+
| 粒度失控 | 一条需求混入多个独立能力,或一条需求就是一个按钮 | 按用户可感知且可独立验收的能力拆分,不估算 Issue 数 |
|
|
259
|
+
| 产品只转录清单 | 没有六维推演或价值取舍,AI 只是多一个聊天入口 | 从主旅程寻找约束内的改进,采用的方向落实 FR/NFR 与验收 |
|
|
260
|
+
| UI 只有形容词 | 只写「美观、现代」或只剩可访问性指标 | 补信息主次、主操作、视觉一致性与相关状态要求 |
|
|
261
|
+
| UAT 变测试步骤 | 写测试账号/造数/点击脚本/探针/故障注入 | 保留场景、业务动作、预期状态与通过条件,方法交 test-plan |
|
|
262
|
+
| AI 没闭环 | 不知道何时触发、谁确认,不可用时只报错 | 补价值、用户控制、质量判据、依赖与降级状态 |
|
|
263
|
+
| SMAR 变口号 | 有功能名却无具体角色、结果或合理边界 | 对照 Specific / Measurable / Actionable / Reasonable,不凭空给日期 |
|
|
227
264
|
| 非目标空着 | 只有 1-2 条或直接省略 | 把评审会被问的相邻功能全列出来 |
|
|
228
|
-
| NFR
|
|
265
|
+
| NFR 没门槛 | 「要安全」「要快」 | 补 `category` + 作用域 + 可判断门槛;数值指标带必要条件 |
|
|
229
266
|
| 编号错乱 | 需求标题/实体引用仍用 R1/R2,或与真实 key 混用 | 创建后回填 FR/NFR key;`R#` 只留在「承接」和 §6.1 作来源标识 |
|
|
230
267
|
| 角色含糊 | 通篇「用户」 | 落到租户内具体角色,并写清权限边界 |
|
|
231
268
|
| 领域词漂移 | 同一概念用多个词,或「账号/状态/任务」各自指多个东西 | 在 §2.1 选定规范词与定义,全篇统一 |
|
|
232
269
|
| 场景只写主路径 | 权限/租户/空数据/重复/状态边界没人拍板 | 用少量高信息量 `S#` 压测真正有关的边界 |
|
|
233
270
|
| 决策只留在对话 | 结论有了,但后来人不知道为什么 | 在 §5.1 只记录会影响范围/语义/验收的产品决策 |
|
|
234
271
|
| 阻塞问题伪装成默认 | 答案会改需求,但文档仍定稿/落库 | 保留在 frontier;未拍板只能交草稿,不写 SPMS |
|
|
235
|
-
| 追踪链断了 |
|
|
272
|
+
| 追踪链断了 | 目标无需求、场景无预期状态或验收 | 补齐 §6.2–6.3;无 TC 不影响 PRD 成立 |
|
|
236
273
|
| 验收盯内部实现 | 断言表/函数/内部调用次数 | 改为用户或外部系统可观察的最高业务边界 |
|
|
237
274
|
| 分期混进正文 | 目标/行为/边界里出现「本期先只做…」「二期再说」 | §0–§6 按终局写;所有期次安排收进 §7 |
|
|
238
275
|
| 非目标当分期用 | 非目标去向写「二期 / 后期再做」 | 属于终局蓝图的挪回 §3 成为 FR/NFR,在 §7 排到靠后期次 |
|
|
239
276
|
| 分期只盘自己 | 分期矩阵里只有本 PRD 新建的几条 | 把查重命中的既有 key、以及同期必须一起上的别的 key 一并列进来并标来源 |
|
|
240
277
|
| 需求被期次切碎 | 一个可感知能力被拆成 FR-A(一期) / FR-B(二期) 两条 | 合回一条,在 §7.2 标成跨期并给终验期 |
|
|
241
278
|
| 按技术栈分期 | 「P1 后端、P2 前端」 | 每期必须说清哪个角色多了什么以前做不到的事;说不清就并掉 |
|
|
279
|
+
| 每期计划过大 | 建议超过 10 个 Milestone,或 9–10 个无理由 | 调整分期;尽量 5–8 个,连续性例外最多 10 个,具体拆解交 dev-plan |
|
|
242
280
|
| 跨期需求没终验期 | 一条需求横跨两期,却没说哪一期算整条完成 | §7.3 登记 + `description` 终验块 + 验收行 `[P#]` 前缀,三处齐 |
|
|
243
281
|
| 阶段完工当整条完成 | 首期 Issue 全绿就把需求转「已上线」 | 终验期未到不置终态;把终验声明写进需求正文,点按钮的人才看得见 |
|
|
244
282
|
| 版本挂错期 | 跨期需求的 release 挂了首期 | 挂**终验期**那一版,否则版本报表提前把它算成已交付 |
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# 产品推演、SMAR 与 UAT 状态验收
|
|
2
|
+
|
|
3
|
+
写新 PRD、整体优化或评审时使用;局部修改只检查受影响部分。推演发生在共同理解确认之前,成文时只综合已确认的产品选择。
|
|
4
|
+
|
|
5
|
+
## 1. 在约束内把产品推演充分
|
|
6
|
+
|
|
7
|
+
先明确用户任务、现状阻碍、用户给定约束、宿主能力和本 PRD 的能力边界。沿「发现 → 理解 → 决策 → 完成任务 → 再次使用 / 异常恢复」走一遍主旅程,省掉无关环节,从以下六个维度寻找有价值的改进。
|
|
8
|
+
|
|
9
|
+
| 维度 | 应推演的产品问题 | 成文落点 |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| 创新性 | 除了照搬现状或参考产品,能否改变用户完成任务的方式,减少过去必须承担的判断或工作? | 与常规方案有实质差异的产品选择、价值与取舍 |
|
|
12
|
+
| 先进性 | 当前生态或 AI 能力是否让新的使用方式成立?哪些只是声明,哪些已有行为证据? | 能力边界、准入条件与依赖;外部能力核到当前官方资料,不能将参考项目说明当成已支持 |
|
|
13
|
+
| 可用性 | 关键角色能否完成完整任务?空数据、无权、依赖缺席、失败时仍能理解状态和下一步吗? | 完整 FR、相关 NFR、状态与恢复判据 |
|
|
14
|
+
| 便捷体验 | 能否减少重复输入、记忆术语、切换入口和无价值确认?首次与高频使用是否都有合适路径? | 默认信息、最短业务路径、渐进展示、便捷性判据 |
|
|
15
|
+
| 美观 UI | 信息主次、排版、密度、留白和视觉语言是否支持任务?各状态与不同窗口下是否保持清晰一致? | 信息层级、视觉原则与可核对要求;沿用宿主设计约束,不只写「现代、美观」 |
|
|
16
|
+
| AI 赋能 | AI 能在哪个环节改善发现、理解、创作、决策或重复劳动?如何判断比基本路径更有价值? | 输入/输出、触发与用户控制、质量/成本边界、降级状态及验收 |
|
|
17
|
+
|
|
18
|
+
六维是思考方向,不要求增加六组功能。对影响主旅程的选择比较有实质差异的候选,写清为什么选、牺牲什么、怎样算成立。将采用的方向落到目标、FR/NFR 和验收中;无 UI 或 AI 无适用价值时说明理由,不为填表添加界面或模型。
|
|
19
|
+
|
|
20
|
+
终局始终在用户给定范围内。技术 PoC 要把重要假设及成立/不成立的判据推演透;完整产品要把用户任务推演透。不因技术 PoC 默认只需几个技术组件,也不把一个 PoC 扩成整个产品系列。
|
|
21
|
+
|
|
22
|
+
## 2. 产品设计与实现设计的边界
|
|
23
|
+
|
|
24
|
+
| PRD 要决定什么 | 下游计划再决定什么 |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| 用户按任务发现内容,理解匹配依据;增强不可用时仍可基本搜索 | 向量索引、检索算法、模型供应商、调用编排 |
|
|
27
|
+
| 同一内容面向人和 Agent 提供不同的消费结果,证据不足时明确为空 | 内部编译阶段、数据模型、存储结构、服务接口拆分 |
|
|
28
|
+
| 用户从出处一次跳转到原文被引段落,能辨认当前位置 | 前端组件、路由状态、焦点管理代码 |
|
|
29
|
+
| 关键状态在首屏可见,主操作突出,详情按需展开,视觉遵守宿主规范 | CSS 数值、组件库选型、DOM 结构 |
|
|
30
|
+
| 受控条件下响应达到门槛,失败后已有内容不丢失 | 压测工具、测试数据生成、故障注入脚本 |
|
|
31
|
+
|
|
32
|
+
用户动作描述不等于测试步骤:「发布者确认发布后,版本可消费」是在定义产品行为;「登录测试账号、依次点击三个按钮、运行查询核对记录」是在设计怎么测。前者留 PRD,后者交 test-plan。
|
|
33
|
+
|
|
34
|
+
已有外部契约或用户指定技术约束可以引用,注明来源和产品影响;不借这些约束自行决定内部实现。评测或诊断工具本身是交付能力时,写它应展示的结果、指标定义和证据,把验收它的测试方法留给下游。
|
|
35
|
+
|
|
36
|
+
## 3. AI 赋能必须形成产品闭环
|
|
37
|
+
|
|
38
|
+
在有价值的环节主动设计 AI 能力,不能满足于一个泛化聊天入口。每项采用的 AI 能力应回答:
|
|
39
|
+
|
|
40
|
+
- **价值与触发**:谁为完成哪项任务,主动触发或在何种已授权条件下触发?替用户省掉什么工作,需要哪些有权使用的输入,得到什么输出?
|
|
41
|
+
- **用户控制**:结果是建议、草稿、解释还是自动业务动作?用户如何理解依据、修改、采纳、拒绝或撤销?重要写入的授权与确认边界是什么?
|
|
42
|
+
- **质量与不确定性**:怎样判断结果可用?无依据、低置信度、矛盾或未验证时显示什么?定义质量指标的口径,不把模型生成或读取成功当成业务成功。
|
|
43
|
+
- **依赖与成本**:权限、预算、可用性不足时进入什么状态?辅助型 AI 保持基本任务可完成;AI 是核心能力时,明确等待、失败和可恢复条件,不假装仍能完成核心任务。
|
|
44
|
+
|
|
45
|
+
这些是产品决策,不要求预先选择模型、提示词、RAG 管线或 Agent 框架。AI 不适用或被用户排除时,保留理由;不将「AI 开发」等同于「所有功能都需要运行时 AI」。
|
|
46
|
+
|
|
47
|
+
## 4. 用 SMAR 检查目标与需求
|
|
48
|
+
|
|
49
|
+
| 原则 | 必须能回答 | 不合格信号 |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| Specific | 谁、在哪个场景、对象是什么、能力和权限到哪? | 通篇「用户」或「智能管理」,同一个状态有多种含义 |
|
|
52
|
+
| Measurable | 到达什么可观察状态、按什么口径判断通过? | 「体验好」「准确」「安全」,只有数字没有作用域/分母 |
|
|
53
|
+
| Actionable | 用户或授权主体能执行什么动作、获得什么可用结果? | 只有愿景/技术名词,没有可完成的任务 |
|
|
54
|
+
| Reasonable | 价值、质量、成本、依赖是否与用户约束相容? | 承诺未知生态组合全部兼容、依赖不明仍无条件承诺、为了先进堆功能 |
|
|
55
|
+
|
|
56
|
+
Measurable 不等于每行硬塞数字。明确的枚举、结果集合、是/否、相等/不变也可验收。性能和质量数值要附必要的负载、语料、样本或分母;指标有观察窗口时说明窗口和未知数据的处理,不在 PRD 展开采样脚本与执行步骤。
|
|
57
|
+
|
|
58
|
+
区分三类口径:产品验收门槛、上线后观察指标、PoC 比较基线。数值来自用户/既有约束则给来源;新提出的门槛标为产品提案并确认,不声称已实测,不把基线当效果承诺。
|
|
59
|
+
|
|
60
|
+
不用 Time-bound 为 AI 开发编造工期或发布日期。以独立用户价值切期,每期开发计划建议 5–8 个 Milestone;连续性例外可为 9–10 个并说明理由,最多 10 个。PRD 表达规模预算,dev-plan 核实并拆解;小任务可更少,超出则反馈拆期,不能删掉完整验收。已有外部日期约束仍须尊重,性能时延、超时、有效期和观察窗口也不能被删除。
|
|
61
|
+
|
|
62
|
+
## 5. UAT 写预期状态,不写测试程序
|
|
63
|
+
|
|
64
|
+
每个重要用户场景写清「角色与前置状态 → 业务意图/动作 → 预期状态 → 清晰的通过条件」,关联真实需求 key 与验收行。只覆盖相关状态:成功、空数据、拒绝、重复/冲突、取消、失败/恢复、AI 不确定/降级。状态包括结果是否可用、显示的解释、允许的下一步和数据是否改变;不能只写一句提示文案。
|
|
65
|
+
|
|
66
|
+
以下为写法示例,不预设具体项目承诺:
|
|
67
|
+
|
|
68
|
+
| 角色与前置 | 业务动作 | 预期状态与通过条件 |
|
|
69
|
+
| --- | --- | --- |
|
|
70
|
+
| 普通成员,没有可用证据 | 提问 | 明确无可靠内容,出处集合为空,无伪造回答;页面给出获取证据的下一步 |
|
|
71
|
+
| 发布者,内容已通过本产品要求的检查 | 确认发布 | 该确切版本可消费;发布成功与兼容验证分别表达,不因发布而显示已验证 |
|
|
72
|
+
| 维护者,AI 给出资料建议 | 拒绝建议 | 正式资料和原始内容保持不变;建议不进入正式分发 |
|
|
73
|
+
| 成员,已有本地内容 | 取消升级 | 原内容与选定版本不变;不显示升级成功 |
|
|
74
|
+
| 成员,AI 增强不可用 | 搜索 | 可用基本结果且模式明确,用户仍可继续任务;不显示增强成功 |
|
|
75
|
+
|
|
76
|
+
定稿检查三件事:每条需求有可判断的验收;每个关键用户场景有预期状态与通过条件;目标/场景/需求/验收/UAT 相互可追踪。此时无需已存在 TC。测试计划随后决定账号、数据、执行步骤、工具、故障模拟和完整覆盖,不能在写测试计划时才首次决定产品应到达什么状态。
|
|
77
|
+
|
|
78
|
+
## 6. 交付前按挑剔评审者的视角自审
|
|
79
|
+
|
|
80
|
+
先读完成稿,逐项找反例并改正文,不把自审过程倾倒进 PRD:
|
|
81
|
+
|
|
82
|
+
- 哪个关键任务仍要求用户自己补步骤或猜状态?是否只罗列功能,没有形成完整体验?
|
|
83
|
+
- 创新/先进/AI 选择有什么具体收益和合理边界?是否只是换术语、跟风或加入口?
|
|
84
|
+
- UI 是否只写可访问性门槛,却遗漏信息主次、视觉一致性和主路径便捷性?
|
|
85
|
+
- 任意一条验收能否无歧义地判定通过/不通过?是否用测试动作替代了预期状态?
|
|
86
|
+
- 是否把用户给定范围之外的能力硬塞进终局,或用分期删掉终局要求?
|
|
87
|
+
- 每期是否有独立用户价值、计划规模预算和清晰终验期?是否将阶段完成冒充整条完成?
|
|
88
|
+
|
|
89
|
+
仍有会改变产品语义的缺口则回到对应决策;已确认且符合约束的选择直接成文,不重复泛化访谈。
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
| §1.2 目标 | `projects.goal`(目标) | 同上;**Web 端是列表编辑器,一行一条** |
|
|
13
13
|
| §1.3 非目标 | `projects.nonGoals`(非目标) | 同上;**一行一条**(去向写在同一行) |
|
|
14
14
|
| §4 约束与前提 | `projects.constraints`(约束与前提) | 同上 |
|
|
15
|
-
| §5.2 非阻塞开放问题 | `projects.openQuestions`(开放问题) | 同上;**一行一条**,格式 `Q1 [非阻塞]
|
|
15
|
+
| §5.2 非阻塞开放问题 | `projects.openQuestions`(开放问题) | 同上;**一行一条**,格式 `Q1 [非阻塞] 问题;默认及理由;负责人;解决节点`;已有外部日期则保留;无则传 `null`;阻塞问题未解时不定稿/不回写项目 |
|
|
16
16
|
| §3 FR 条目 | `requirements`(`FR-N`) | `requirement_create` |
|
|
17
17
|
| §3 NFR 条目 | `requirements`(`NFR-N`,带 `category`) | `requirement_create` |
|
|
18
18
|
| 条目正文 | `requirements.description`(UI 标签「PRD 描述」) | 完整 markdown |
|
|
19
19
|
| 验收标准 | `requirements.acceptanceCriteria`(UI 标签「验收标准」) | **纯文本,一行一条** |
|
|
20
|
-
|
|
|
20
|
+
| §6.3 UAT 场景预期状态 | **无独立字段** | 文档保留全局状态表,相关场景与判据写入对应需求 `description`;PRD 不创建 TC,由 test-plan 后续展开 |
|
|
21
21
|
| §7 分期交付建议 | **无独立字段** | 分期本身只留在 PRD 文档;**跨期需求的终验声明**要落进该需求的 `description` 开头 + `acceptanceCriteria` 逐行 `[P#]` 前缀(见 §5),版本(release)人工挂**终验期**那一版 |
|
|
22
22
|
| §8 SPMS 落库结果 | — | 记录本次真实写入的 key 与待人工补字段;有阻塞问题时改写「未写入」 |
|
|
23
23
|
| 开发计划(下游) | `plans`(`PLAN-N`)+ `plan_requirements` | dev-plan 阶段 `plan_create(requirementKeys)` / `plan_update({content})`。**PRD : 计划多对多**——可拆可合,关联键是 FR/NFR key;⚠️ **只能挂同项目的需求**,跨项目 key 报 `LIFECYCLE_MISMATCH`(平台契约) |
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
| --- | --- | --- |
|
|
50
50
|
| `importance` 重要度 | `critical\|high\|medium\|low\|none` | 与 `priority`(紧急度)**正交**,两个都该给 |
|
|
51
51
|
| `ownerId` 负责人 | `project_get` 成员名册的 `memberId`;`null` 清除 | 只收本租户未撤销成员,否则 `VALIDATION_FAILED`。与「执行人」(由关联 Issue 派生)不是一回事 |
|
|
52
|
-
| `dueDate` 截止日期 | ISO 8601(如 `2026-07-15`);`null` 或空串清除 | 格式不对是 `VALIDATION_FAILED
|
|
52
|
+
| `dueDate` 截止日期 | ISO 8601(如 `2026-07-15`);`null` 或空串清除 | 格式不对是 `VALIDATION_FAILED`。仅按用户/外部日期约束填写,不为 SMART 的 T 自动造日期;更新时保留未要求改变的原值 |
|
|
53
53
|
|
|
54
54
|
**仍然写不到的字段**——交付时单列一张「待人工补」清单:
|
|
55
55
|
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
|
|
78
78
|
```
|
|
79
79
|
✅ 管理员在「应用市场」点击安装后,应用 3 秒内出现在左侧导航
|
|
80
|
-
✅
|
|
80
|
+
✅ 无安装权限的成员不能安装应用,且导航不显示安装入口
|
|
81
81
|
✅ 已安装应用重复安装时提示「已安装」,不产生第二条记录
|
|
82
82
|
|
|
83
83
|
❌ - 管理员可以安装应用 → 行首 "-" 会原样显示成「• - 管理员…」
|
|
@@ -94,12 +94,14 @@
|
|
|
94
94
|
|
|
95
95
|
```
|
|
96
96
|
✅ [P1] 管理员在「应用市场」点击安装后,应用 3 秒内出现在左侧导航
|
|
97
|
-
✅ [P2]
|
|
97
|
+
✅ [P2] 管理员安装应用后可配置成员入口,未授权成员不能进入该应用
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
方括号**不在**剥离表(`- * • 1. 1)`)里,展示端本来也不剥 —— 所以这是**唯一不破坏「纯文本一行一条」契约**的标法。
|
|
101
101
|
**单期需求不要加**,加了就是噪声。配套的两处见 §5.1。
|
|
102
102
|
|
|
103
|
+
验收行描述场景预期状态与清晰判据,不写测试方法。上面示例只示范格式;权限边界等上线必要条件应随所在期用户价值一起满足,不能为了跨期示例而推迟必要权限保护。
|
|
104
|
+
|
|
103
105
|
### 5.1 跨期需求的终验声明(防「阶段交付被误记为整条完成」)
|
|
104
106
|
|
|
105
107
|
一条需求跨两期交付时,**整条需求算完成的那一期叫「终验期」= 最后一期**。三处一起写,缺一处就会有界面在说谎:
|
|
@@ -129,10 +131,10 @@ requirement_get('FR-18') → 读某条全量(含验收标
|
|
|
129
131
|
--- 用户确认后 ---
|
|
130
132
|
requirement_create({projectId, title, type, category?, priority, status:'draft',
|
|
131
133
|
description, acceptanceCriteria}) → 返回体里拿真实 key
|
|
132
|
-
testcase_create({projectId, title, requirementKey:'FR-37', preconditions?, steps, expected,
|
|
133
|
-
priority?, status:'draft'}) → TC-N,result 默认 untested
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
+
PRD 到需求写入为止;UAT 场景与验收标准交给 test-plan,由它查重并创建 TC,本阶段不调用 `testcase_create`。
|
|
137
|
+
|
|
136
138
|
## 7. 错误码与闸(照实报,别绕道)
|
|
137
139
|
|
|
138
140
|
| 现象 | 含义 | 怎么办 |
|
package/skills/react/SKILL.md
CHANGED
|
@@ -6,11 +6,13 @@ description: >
|
|
|
6
6
|
(2) writing or debugging `useEffect` — deciding whether an Effect is needed at all,
|
|
7
7
|
(3) using `useState` for derived values, or syncing state between components,
|
|
8
8
|
(4) diagnosing unnecessary re-renders, stale closures, or memoization problems,
|
|
9
|
-
(5) fixing data-fetching waterfalls, race conditions, or duplicate requests,
|
|
9
|
+
(5) fixing data-fetching waterfalls, race conditions, or duplicate requests, or using `use()` with Suspense,
|
|
10
10
|
(6) optimizing paint, hydration, resource loading, or hot-path JavaScript,
|
|
11
|
-
(7) working with refs, composition, prop drilling, or controlled vs. uncontrolled components
|
|
11
|
+
(7) working with refs, composition, prop drilling, or controlled vs. uncontrolled components,
|
|
12
|
+
(8) upgrading React 18 to 19 — removed APIs (`ReactDOM.render`, `findDOMNode`, string refs, legacy context), `forwardRef`, `defaultProps`, and tests (`test-utils`, `act`, StrictMode counts),
|
|
13
|
+
(9) forms and mutations with Actions — `useActionState`, `useFormStatus`, `useOptimistic`.
|
|
12
14
|
license: MIT
|
|
13
|
-
compatibility: React 18+ (React 19 for `use`, `Activity`, ref-as-prop)
|
|
15
|
+
compatibility: React 18+ (React 19 for `use`, Actions, `Activity`, ref-as-prop)
|
|
14
16
|
allowed-tools: Read Write Edit Glob Grep
|
|
15
17
|
---
|
|
16
18
|
|
|
@@ -25,9 +27,11 @@ Read ALL relevant references in the same turn, in parallel. Cite them when givin
|
|
|
25
27
|
- [Effect patterns](references/effect-patterns.md): When you don't need an Effect, dependency rules, cleanup, subscriptions, `useSyncExternalStore`, one-time initialization
|
|
26
28
|
- [Re-render optimization](references/rerender-optimization.md): `memo`/`useMemo`/`useCallback`, derived state, functional updates, lazy init, `useDeferredValue`, `startTransition`, `useEffectEvent`
|
|
27
29
|
- [Component patterns](references/component-patterns.md): Refs, `useImperativeHandle`, custom hook rules, controlled vs. uncontrolled, composition over prop drilling, `flushSync`
|
|
28
|
-
- [Data fetching](references/data-fetching.md): Parallelizing requests, Suspense boundaries, request deduplication, passive listeners, `localStorage` versioning
|
|
30
|
+
- [Data fetching](references/data-fetching.md): Parallelizing requests, Suspense boundaries, `use()` and stable promise sources, request deduplication, passive listeners, `localStorage` versioning
|
|
29
31
|
- [Rendering performance](references/rendering-performance.md): `content-visibility`, hydration mismatches, resource hints, script loading, SVG animation, `Activity`, `useTransition`
|
|
30
32
|
- [JS performance](references/js-performance.md): Layout thrashing, `Set`/`Map` lookups, index maps, single-pass iteration, `toSorted`, `requestIdleCallback`
|
|
33
|
+
- [Actions](references/actions.md): `<form action>`, `useActionState`, `useFormStatus`, `useOptimistic` — pending, error, and optimistic state for mutations
|
|
34
|
+
- [React 19 migration](references/react19-migration.md): Upgrading from 18 — root API, `findDOMNode`, `forwardRef`, `defaultProps`, legacy context, string refs, propTypes, JSX transform, TypeScript types, `act`/`test-utils`, StrictMode test counts
|
|
31
35
|
|
|
32
36
|
## You Might Not Need an Effect
|
|
33
37
|
|
|
@@ -83,6 +87,22 @@ Need to respond to something?
|
|
|
83
87
|
- Move `await` past early returns and behind cheap synchronous guards
|
|
84
88
|
- One shared request per endpoint (SWR / React Query), not one per component instance
|
|
85
89
|
- Every fetch effect needs an `ignore` flag or `AbortController`
|
|
90
|
+
- Promises passed to `use()` come from a loader, cache, library, or Server Component — never created in render
|
|
91
|
+
|
|
92
|
+
### Forms and mutations (React 19)
|
|
93
|
+
|
|
94
|
+
- `<form action={fn}>` over `onSubmit` + `preventDefault`; `useActionState` over a loading/error reducer
|
|
95
|
+
- Return expected errors from the action as state; thrown errors go to the error boundary
|
|
96
|
+
- `useFormStatus` is imported from `react-dom` and only reads a parent `<form>`
|
|
97
|
+
- Seed `useOptimistic` with confirmed state and call its setter inside an Action
|
|
98
|
+
- After `await` inside an Action, wrap state updates in another `startTransition`
|
|
99
|
+
|
|
100
|
+
### Upgrading to React 19
|
|
101
|
+
|
|
102
|
+
- Run `npx codemod@latest react/19/migration-recipe` first; the upgrade PR changes API surface only
|
|
103
|
+
- `forwardRef` still works — `ref` is a plain prop; convert opportunistically
|
|
104
|
+
- `defaultProps` are ignored on function components but still work on class components
|
|
105
|
+
- StrictMode still double-runs effects; what changed is `useMemo`/`useCallback` result reuse and double-invoked ref callbacks
|
|
86
106
|
|
|
87
107
|
### Performance
|
|
88
108
|
|
|
@@ -101,3 +121,5 @@ Need to respond to something?
|
|
|
101
121
|
5. Are components defined at module scope?
|
|
102
122
|
6. Are independent async calls parallelized?
|
|
103
123
|
7. Are mutating array methods used on props or state?
|
|
124
|
+
8. Is every promise passed to `use()` stable across renders?
|
|
125
|
+
9. On React 19: are forms using Actions with errors returned as state, and are removed APIs (`findDOMNode`, string refs, legacy context, `test-utils`) gone?
|