@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
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: portal-micro-app
|
|
3
|
-
description: '开发/修改 XGENT Portal 的嵌入式微应用前端(micro 型 App,iframe + @xgent/portal-sdk
|
|
3
|
+
description: '开发/修改 XGENT Portal 的嵌入式微应用前端(micro 型 App,iframe + @xgent/portal-sdk,独立前端项目)。凡任务涉及新建一个 App 前端、给某 App 加页面/导航项/Dashboard Widget、SDK 握手/getToken/callService、consent 授权屏、或 iframe 内的 UI 异常(弹窗无效/菜单点不动/主题/路由同步/全屏/剪贴板)时,务必先用本 skill——即使用户没提"微应用"三个字。Use when building or changing any micro-app frontend embedded in the portal, the portal SDK handshake, navItems, dashboard widgets, or iframe-specific UI issues.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# portal-micro-app · 嵌入式微应用(iframe + SDK)开发
|
|
7
7
|
|
|
8
|
-
微应用是被 Portal 以沙箱 iframe 嵌入的普通 Web 页面:**不自己实现登录、不持有 App Secret**,身份由宿主经 postMessage 握手注入。本文件是工作流与红线;具体契约按需读 `references
|
|
8
|
+
微应用是被 Portal 以沙箱 iframe 嵌入的普通 Web 页面:**不自己实现登录、不持有 App Secret**,身份由宿主经 postMessage 握手注入。本文件是工作流与红线;具体契约按需读 `references/`(可整目录拷到任何 App repo 使用)。
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
> `deploy/…` 这类路径**都在门户仓**。在 App 自己的 repo 里它们**不存在** —— 它们标注的是
|
|
13
|
-
> 「门户侧要做什么」或某段内容的出处,**不是让你去打开的文件**。找不到不是配置错误:
|
|
14
|
-
> 别去创建、别去全局搜、别把它当缺失依赖报出来。你需要的一切都在本 skill 的
|
|
15
|
-
> `references/`(自包含)。若你正在门户仓里工作,那这些路径就是可以直接打开的真实文件。
|
|
16
|
-
>
|
|
17
|
-
> ⚠️ 一个例外:`/apps/<key>/`(带前导斜杠)是**线上 URL 路径**——微应用产物的挂载点,
|
|
18
|
-
> 与仓内的 `apps/<key>-app/` 目录无关,别混。
|
|
11
|
+
`/apps/<key>/` 是线上前端挂载 URL;本文的 `references/` 相对于本 skill 目录。
|
|
19
12
|
|
|
20
13
|
## 按任务读参考
|
|
21
14
|
|
|
@@ -25,27 +18,23 @@ description: '开发/修改 XGENT Portal 的嵌入式微应用前端(micro 型
|
|
|
25
18
|
| 声明导航、scope、ACL、Widget、依赖 | [references/manifest-and-acl.md](references/manifest-and-acl.md) |
|
|
26
19
|
| 调 Open API / Widget 推送 / 通知 / 内容 / 计划任务 / 审计 / 错误码 | [references/open-api-and-extensions.md](references/open-api-and-extensions.md) |
|
|
27
20
|
|
|
28
|
-
|
|
21
|
+
## 新建一个 micro App 前端的最小闭环
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
1. 在 App 自己的仓库新建 Vite + React 前端,配置固定空闲端口并开启 `strictPort`,避免自动换端口后加载错应用。
|
|
24
|
+
2. 安装下述公开分发的 SDK/UI 包,按本地 [SDK 参考](references/sdk-reference.md) 接入握手与路由。
|
|
25
|
+
3. 在自己的 `app.manifest.json` 声明 `navItems` / `scopes` / `aclManifest` / `dashboard.widgets`;租户管理员不能代填开发者声明。
|
|
26
|
+
4. Vite `base` 设为 `/apps/<key>/`,构建 `dist/`,用 `xgent-app-release` skill 的 `publish --dist` / `publish --manifest` 提交;涉及治理字段等待审批,按本次 proposal 的交付状态核对结果。
|
|
27
|
+
5. 本地联调用 `portal-dev-setup` 的一盒环境。生产优先 `sdk.callService` 与同源托管;需要开发 CORS 白名单时交平台管理员处理。
|
|
28
|
+
6. 在真实浏览器从宿主进入并走通主路径、路由往返与权限边界;不以构建通过代替 UI 验证。
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
5. UI 开发遵守 CLAUDE.md 强制两步:设计用 `impeccable` skill,验证用 Chrome extension 真浏览器走通主路径。
|
|
37
|
-
|
|
38
|
-
**你的 App 不在门户 monorepo 里(代码在自己的 repo)** ⇒ 上面 1–3 步一条都不适用:没有
|
|
39
|
-
`apps/<key>-app` 目录、没有 `dev:all`、清单也不在 `LISTING_DEFS` 里。你的闭环是另一条:
|
|
40
|
-
vite `base` 设成 `/apps/<key>/` → build 出 `dist/` → 用 `xgent-app-release` skill 的
|
|
41
|
-
`publish --dist` 交上去(清单同理走 `publish --manifest`,你 repo 里那份 `app.manifest.json`
|
|
42
|
-
就是唯一事实源);想在真门户里先看一眼,把 `dist` 绝对路径挂进一盒(`portal-external-app`
|
|
43
|
-
skill 的 `references/registration-and-onebox.md` §4)。**本文件其余部分(SDK 硬规则、consent、
|
|
44
|
-
iframe 坑、设计红线、三份 references)与你在哪个 repo 无关,照用。**
|
|
30
|
+
`@xgent/portal-sdk` / `@xgent/portal-ui` / `@xgent/shared` 在你的 repo 里**照常作为 npm 依赖安装**,
|
|
31
|
+
来源是平台的私有包仓(公共 npm 上没有,直接 `bun add` 会 E404)。配法见 `xgent-app-release`
|
|
32
|
+
skill 的「第 0 步」。仓里还没有 `.xgent-registry.env` ⇒ 停下,请开发者先去门户「开发者应用」生成
|
|
33
|
+
配置文件。**不许 vendor**:不把 SDK 的产物或源码拷进仓,也不用 `file:` / `link:` / tar 依赖顶替。
|
|
45
34
|
|
|
46
35
|
## SDK 硬规则
|
|
47
36
|
|
|
48
|
-
- 私有页面从 `const sdk = createPortalClient(); const init = await sdk.ready();` 开始。SDK 0.4.0 支持 iframe 与同源 standalone 共用自举;声明 `openModes` 后从 `/open/<key>` 进入。顶层必须处理 `ready()` typed error 和 `onContextChanged()`,失效时卸载私有视图与应用缓存,并提供显式 `openGate()`;不要自动跳登录。匿名页可不调用 `ready()`。生产从 `/apps/<key>/` 推导 key,开发的 appKey/host/apiBase 来自构建配置,不能读 URL
|
|
37
|
+
- 私有页面从 `const sdk = createPortalClient(); const init = await sdk.ready();` 开始。SDK 0.4.0 支持 iframe 与同源 standalone 共用自举;声明 `openModes` 后从 `/open/<key>` 进入。顶层必须处理 `ready()` typed error 和 `onContextChanged()`,失效时卸载私有视图与应用缓存,并提供显式 `openGate()`;不要自动跳登录。匿名页可不调用 `ready()`。生产从 `/apps/<key>/` 推导 key,开发的 appKey/host/apiBase 来自构建配置,不能读 URL 配认证主机。详见 [SDK 参考](references/sdk-reference.md)。
|
|
49
38
|
- `sdk.getToken()` 自动缓存、到期前 30s 续签——**不要**自己存 TDT、不要写 localStorage。
|
|
50
39
|
- 用户长期凭证由本 App 后端委托门户签发。前端只将新建/迁移响应保存在当前一次性展示组件;不要用 Query/Mutation 缓存保存含 secret/token 的响应。关闭后清除,复制失败提供选中文本和重试。门户集中管理入口是 `/me?tab=keys`;App 保留项目/能力/路由配置、旧密钥停用与远端撤销重试。
|
|
51
40
|
- 全局平台管理员不在 TDT JWT / `InitPayload` 里;`sdk.acl.bypass` 和 `sdk.userinfo().role` 只表示当前租户。前端即使拿到 session-only `/auth/me.isPlatformAdmin` 也只能做展示,不能转发给后端授权;跨租户后端只认 TDT 自省返回的 `isPlatformAdmin`。
|
|
@@ -53,7 +42,7 @@ iframe 坑、设计红线、三份 references)与你在哪个 repo 无关,
|
|
|
53
42
|
- 权限:`sdk.acl.can(pid)` / `sdk.acl.scope(pid)` 只做**隐藏按钮/入口**的 UX 门;真正拦截靠后端。前端判过 ≠ 安全。
|
|
54
43
|
- 路由:内部路由变化调 `sdk.routeSync(path)` 同步到 `?r=`;同时**必须**订阅 `sdk.onRoute` 处理宿主推回的路由(浏览器后退、同 App 多导航项切换)。只写单向 routeSync 会出现"同一 App 两个菜单点了不切换"的 bug。二级详情页把完整路径(如 `/items/<id>`)routeSync 出去,刷新/分享才能还原。
|
|
55
44
|
- 版头面包屑:调 `sdk.setBreadcrumbs(crumbs)` 上报页面层级(宿主最左恒为「应用图标 + 应用名」= 应用首页,你报的是其后那几级;首页推 `[]`,每次是整条 trail 的**全量覆盖**)。四条规矩:① 挂在**视图驱动的 effect** 上,**不要**散在各个 `routeSync()` 调用点——宿主发起的路由变化只走 `onRoute`,挂错的症状是"侧栏切页后面包屑空着";② `onRoute("")`(空路由)必须落到首页视图,版头最左那一级靠它工作;③ 标签要异步查询才知道时**宁可少一级**,不推 id 占位、不推"加载中…",数据回来再整条覆盖(`FR-12` 这种展示 key 可以推,内部 UUID 不可以);④ `label` 用**自己当前的语言**解析好(宿主不翻译),切语言在 `onLocale` 里重推。上限 6 级 / label 120 字符 / route 512 字符且必须 `/` 开头(不得以 `//` 开头),超限被静默截断;末级不带 `route`。
|
|
56
|
-
- **App 内不要自绘图标与名称**:版头最左那一级恒为「应用图标 + 应用名」且可点回应用首页,App 再画一份就是同屏说两次,而且租户改过 App 名之后两处会说得不一样(`apps.name` 租户可改、i18n 词条改不了)。tagline / 副标题同理(应用中心已展示过)。可以留:角色 / 工作区 / 当前对象这类**运行期事实**,以及 `main.tsx` 里脱离门户打开时的 standalone
|
|
45
|
+
- **App 内不要自绘图标与名称**:版头最左那一级恒为「应用图标 + 应用名」且可点回应用首页,App 再画一份就是同屏说两次,而且租户改过 App 名之后两处会说得不一样(`apps.name` 租户可改、i18n 词条改不了)。tagline / 副标题同理(应用中心已展示过)。可以留:角色 / 工作区 / 当前对象这类**运行期事实**,以及 `main.tsx` 里脱离门户打开时的 standalone 壳。浏览器验收时检查版头与 App 内容没有重复标题。
|
|
57
46
|
- **帮助页入口 `helpEntry`**:清单里声明一个可空字符串,版头工具条最右侧(全屏与刷新的**左边**)就多一枚帮助按钮;不声明就不出按钮。两种形态:`"/help"` = App 内路由(宿主置 `?r=`,不离开门户,**自动档**)、`"https://docs.example.com"` = 外站文档(新标签 + `noopener`,**走治理审核**,因为门户版头等于替这个域名背书)。`/…` 与 crumb `route` 同一条规则;外站必须 https(`http://` 连回环也拒)、无 fragment。它是**安装期快照**,改了要 bump 自己的 `version`;**租户不可覆盖**(想指向自家知识库去知识库 App 建条目)。门户不托管、不渲染、不翻译帮助正文。
|
|
58
47
|
- **低频入口放版头、不占侧栏**:帮助中心 / 接入指引这类低频页别长期占着侧栏一个位置 —— 用 `helpEntry` 挂到版头,并把这一级显式推进面包屑。
|
|
59
48
|
- 主题/语言:订阅 `sdk.onTheme` / `sdk.onLocale`;高度用 `sdk.resize`;未保存更改 `sdk.setDirty(true)` 让宿主拦离开。
|
|
@@ -76,7 +65,8 @@ iframe 坑、设计红线、三份 references)与你在哪个 repo 无关,
|
|
|
76
65
|
- **不自建**「设置」页/导航(租户配置走平台应用配置页)、**不自建**审计页(写 `POST /api/v1/audit`)。
|
|
77
66
|
- **不做**「同步通讯录」:成员选择一律用 `@xgent/portal-ui` 的 `UserPicker` 按需 curated。
|
|
78
67
|
- 列表页服务端分页,复用 `Page<T>` 契约与现有 helpers。
|
|
79
|
-
- 复用
|
|
68
|
+
- 复用 `@xgent/portal-ui` 已有组件再造新轮子。
|
|
69
|
+
- **页面铺满客户区,上限 1600**:iframe 就是客户区(14" 笔记本上约 1272px,App 自带侧栏再减 ~200px)。页面框架写 `mx-auto w-full max-w-[1600px]` + 页边距,**不要**把整页收成 `max-w-3xl` / `max-w-[880px]` 居中——笔记本上会左右各空 150–200px。窄只加在内容块上且**左对齐**:表单 / 设置列 ≤ 720px、Markdown 文档列 ≤ 880px、段落正文 ≤ 72ch;多个设置分区 `lg:` 并排两栏、卡片网格 `xl:` 加一列。允许居中窄列的只有:对话流(≤ 800px)、多步向导、授权 / 无权限卡片、空状态、纸面预览、弹窗 / 抽屉。
|
|
80
70
|
|
|
81
71
|
## 完成标准
|
|
82
72
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Manifest 与 ACL 声明(微应用视角)
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 本文是可在 App 仓库独立使用的契约参考;能力以目标平台已发布版本和管理员配置为准。
|
|
4
4
|
|
|
5
5
|
## 1. 模型:开发者字段快照
|
|
6
6
|
|
|
7
7
|
Manifest 的权威载体是一条**市场清单(marketplace listing)**。安装 = 把开发者字段快照复制进该租户的 `apps` 行;清单升级后租户「同步更新」重拷开发者字段(运营字段不动)。`listingKey` 就是 TDT 的 `aud`,不可改。
|
|
8
8
|
|
|
9
|
-
⚠️ **ACL Manifest 和 navItems
|
|
9
|
+
⚠️ **ACL Manifest 和 navItems 只能由应用自身声明**(自己的 `app.manifest.json`),租户管理员不能在注册表单手填。修改后提交完整清单发布提案,按治理要求审批,并核对已安装租户的同步结果。
|
|
10
10
|
|
|
11
11
|
## 2. 微应用相关的开发者字段
|
|
12
12
|
|
|
@@ -25,13 +25,19 @@ Manifest 的权威载体是一条**市场清单(marketplace listing)**。安
|
|
|
25
25
|
| `extPoints` | 仅 `settings.section` |
|
|
26
26
|
| `dependencies` | 依赖的其他清单(安装按拓扑序补装;卸载被依赖会拦截) |
|
|
27
27
|
| `exchangeTargets` | 经令牌交换读取哪些 App(安装时自动建交换白名单 + consent 共授) |
|
|
28
|
-
| `embedCsp
|
|
28
|
+
| `embedCsp` | 托管前端的精确来源声明;开发版本支持 connectSrc/scriptSrc/styleSrc/fontSrc/imgSrc/mediaSrc,须正式发布并启用 strict/v2 后使用,旧门户只支持 connectSrc |
|
|
29
29
|
| `tdtTtl` | TDT 有效期秒数,60–86400,默认 3600 |
|
|
30
30
|
|
|
31
31
|
运营字段(租户管理员设,非 Manifest):`visibility` / `showInCenter` / `pinned` / `enabledNavItemIds` / `webhookUrl` / `allowExchange` / `exchangeWhitelist`。
|
|
32
32
|
|
|
33
33
|
## 3. ACL Manifest schema
|
|
34
34
|
|
|
35
|
+
匿名页面可以位于 `/apps/<key>/…`,不应在该路由先强制 SDK 登录;数据授权仍归 App。
|
|
36
|
+
后端直出 HTML 可以正式使用 `/svc/<key>/…`,但其 cookie Path、表单、资源、fetch、
|
|
37
|
+
Location 和受保护预览必须适配外部 base。独立域名复用 `publicEntrypoints` + Sites,
|
|
38
|
+
声明本身不创建门户根级路径。详见 portal-external-app 的公开入口参考;发布与 CSP
|
|
39
|
+
实际验收见 xgent-app-release。改 listingKey 是身份/资源迁移,不是显示名修改。
|
|
40
|
+
|
|
35
41
|
```ts
|
|
36
42
|
interface AclManifest {
|
|
37
43
|
version: string; // reconcile 基准
|
|
@@ -77,3 +83,15 @@ interface AclAction {
|
|
|
77
83
|
- Shell 经 `GET /api/apps/nav` 聚合可见应用的已启用项;点击打开 `/app/:appKey?r=<path>`,SDK 握手时 `init.route` 就是这个 path。
|
|
78
84
|
- `navItems[].id` 绑定 `AclPage.navItemId` 后,侧栏按用户 ACL 隐藏无权入口——但应用前端仍要 `sdk.acl` 做 UX 门、后端仍做安全门。
|
|
79
85
|
- 约定:`id` 应用内稳定(改 id = 删旧菜单加新菜单,租户启用状态受影响);`path` 用应用内部路由(`/` 开头);`icon` 用 Portal 支持的图标名。
|
|
86
|
+
|
|
87
|
+
## CSP 与发布确认的版本边界
|
|
88
|
+
|
|
89
|
+
新增扩展能力尚未因本文更新而上线;strict 默认关闭,需平台盘点来源并受控启用 v2。六类来源
|
|
90
|
+
使用 HTTPS origin(connectSrc 另允许 WSS 及原样 `blob:`/`data:`),禁止通配、路径、凭据和 unsafe-inline/unsafe-eval;
|
|
91
|
+
platformSources 仅 scriptSrc/styleSrc/fontSrc/connectSrc 可声明 ["jsCdn"],跟随平台 CDN。
|
|
92
|
+
省略整个 embedCsp 沿用,null 清空,对象是完整替换;来源增删均治理,排序去重不算变更。
|
|
93
|
+
|
|
94
|
+
新版 delivery 追踪本次 proposalId 的审批、清单/产物、后端和网关四阶段。纯前端 backend 为
|
|
95
|
+
not_applicable 仍须等网关;unknown 不当成功,superseded 表示目标被后续取代。旧门户无 delivery
|
|
96
|
+
不能确认网关。CSP 只扩展本 App 的 /apps 前端,不更改门户壳、沙箱或 /svc 后端公开页策略;
|
|
97
|
+
公开数据授权与真实浏览器主路径仍需单独验证。
|
package/skills/prd/SKILL.md
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prd
|
|
3
|
-
description:
|
|
3
|
+
description: 撰写或优化 PRD,将业务想法转为清晰的产品目标、FR/NFR、用户场景预期状态与 UAT 验收条件,可录入 SPMS。在用户约束内推演创新性、先进性、可用性、便捷体验、美观 UI 与 AI 赋能,以 SMAR 检查需求,末尾给出分期及终验期。用户要求写需求文档、梳理或拆分需求、产品需求设计、修改 PRD 或录入需求时使用。仅评审既有 PRD 优先使用 review-prd;具体技术实现属于 dev-plan,测试方法与 TC 用例属于 test-plan。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# prd · 面向 SPMS 生命周期的需求撰写
|
|
7
7
|
|
|
8
|
+
仅评审既有 PRD 并产出问题/报告时使用 `review-prd`;从零撰写或按已确认意见修改需求使用本 skill,写作中的自检仍按下述质量门执行。
|
|
9
|
+
|
|
8
10
|
## 你的角色与这份文档的命运
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
你是**资深产品经理与产品设计者**。先在用户约束内把产品推演充分,再把选择写成可交付、可验收的需求,不只转录功能清单。你的产出有两个去处:
|
|
11
13
|
|
|
12
|
-
- **SPMS**(事实源):项目下的 `FR-N` / `NFR-N`
|
|
14
|
+
- **SPMS**(事实源):项目下的 `FR-N` / `NFR-N` 条目,带可断言的验收标准与场景预期状态。它们会进产品待办、排迭代、被拆成 Issue、被 Agent 领取修复、最终 `shipped`——**整条生命周期都挂在你写的这几条上**。用户只要文档或工具不可用时,如实交付未录入的文档。
|
|
13
15
|
- **PRD 文档**(工作稿):`docs/PRD-<代号>.md`,评审的载体,也是下一步 `dev-plan` skill 的输入。
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
**三条内容边界:**
|
|
16
18
|
|
|
17
|
-
-
|
|
19
|
+
- **产品与实现——PRD 回答 what / why / 怎样算做完。** 用户旅程、信息层级、交互反馈、视觉要求与 AI 的产品行为要设计清楚;技术方案、数据模型、端点设计、算法/模型选型、技术里程碑拆分属于 `dev-plan`。用户给定或已核实的平台技术约束写进「约束与前提」并标来源,不能据此自行扩写实现方案。即使用户要技术框架 / PoC PRD,也先写清要证明的假设、对外能力与成立判据,具体架构仍由开发计划承接。
|
|
20
|
+
- **验收与测试——UAT 写不同用户场景下预期到达的状态及通过条件。** 前置条件、用户意图/业务动作、可观察结果、失败/降级状态属于 PRD;操作脚本、测试数据生成、探针、故障注入、测试工具及 TC 创建属于 `test-plan`。若评测台本身是用户要求的产品能力,定义它应提供什么报告、判定与证据,不展开用于验收该评测台的测试方案。
|
|
18
21
|
- **时间边界——正文写终局,分期只在末尾。** §0–§6 用**全局视角**描述这块能力**做完之后**应该是什么样:目标写终局结果,需求条目写完整能力,一条都不许因为「这期做不完」提前砍掉或写小。**分期是交付节奏的建议,不是需求的裁剪**——所有期次安排收在最后一节(§7),等全局盘完之后一次给出。写正文时脑子里冒出「本期先只做…」,那句话属于 §7,不属于 §1/§3。
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
每条需求都要能回答「谁在什么条件下做什么 → 应到达什么状态、满足什么判据」。数值阈值、明确枚举、存在/不存在、相等/不变都可断言;不为凑数字制造无依据的承诺。答不上来就标为开放问题,不许用漂亮话糊过去。
|
|
24
|
+
|
|
25
|
+
## 产品推演与 SMAR 质量门
|
|
26
|
+
|
|
27
|
+
新建、整体优化或评审 PRD 时读 [references/product-quality.md](references/product-quality.md);窄幅修订只使用相关规则。该参考覆盖六个设计维度、AI 价值与边界、SMAR、UAT 状态写法和反向评审。
|
|
28
|
+
|
|
29
|
+
- **先推演再收敛**:创新性、先进性、可用性、便捷的用户体验、美观的 UI、AI 赋能六个维度都要考虑。沿主用户旅程寻找在约束内更好的产品形态,比较有实质差异的选择,把高价值且合理的改进落实为 FR/NFR、体验要求和验收条件;不适用的维度说明理由,不机械加功能。
|
|
30
|
+
- **极致落在用户价值上**:减少用户判断、重复输入和无价值步骤,兼顾首次使用、日常使用与失败恢复。AI 能改善发现、理解、创作或决策时应主动提出并设计;写清用户控制、质量判据和不可用时的产品状态,不只加一个聊天框。
|
|
31
|
+
- **SMAR**:Specific(对象/场景/边界明确)、Measurable(结果可判断)、Actionable(用户或授权主体可完成明确动作)、Reasonable(价值、质量、成本和依赖在约束内合理)。不用 Time-bound 制造开发日期;以分期建议表达交付顺序。性能时延、超时、数据有效期和指标观察窗口仍是有效的产品判据。
|
|
32
|
+
- **范围由用户约束确定**:终局是这份 PRD 能力范围内的终局。PoC、明确不做的功能与系列中其他 PRD 的范围都要尊重;新提案在澄清阶段展示价值与取舍,确认后成文,不借创新扩张范围。
|
|
21
33
|
|
|
22
34
|
> **路径约定**:本 skill 可整目录拷到任何 repo 使用——面向所有用 SPMS(研发项目管理)App 管理需求的团队。skill 自带的 `references/` 永远可读;正文里凡属 SPMS 平台行为的陈述(字段、枚举、渲染规则、错误码)是**平台契约**,在平台侧核实过,不需要你读到平台源码来复核。文末「本仓库(xgent-ai-portal)默认值」一节**只在门户仓内工作时适用**——装到其他 repo 时忽略它,那些路径在你的 repo 里不存在,不要去找、不要去建。`evals/` 目录(若存在)是门户仓内部的回归夹具,skill 运行期从不读它,分发时不携带。
|
|
23
35
|
|
|
@@ -25,19 +37,21 @@ description: 以资深产品经理视角把一个想法/诉求梳理成可被 SP
|
|
|
25
37
|
|
|
26
38
|
```
|
|
27
39
|
0. 锚定生命周期位置 → 定位真实 project;读 SPMS 现状、领域语言与既有约束
|
|
28
|
-
1.
|
|
40
|
+
1. 产品推演与澄清 → 六维设计 + SMAR;建决策树;用场景压测;按 frontier 分轮问
|
|
29
41
|
2. 查重与现状核对 → pms_search + 平台现状:这条已经存在吗?已经能做了吗?
|
|
30
42
|
3. 定范围 → **终局**目标 / 非目标(逐条给去向) / 优先级分档 / 依赖前置
|
|
31
|
-
4. 逐条成文 →
|
|
32
|
-
5. 分期交付建议 →
|
|
33
|
-
6. 写入 SPMS → 确认后 requirement_create(draft) +
|
|
43
|
+
4. 逐条成文 → 完整 FR/NFR + 体验要求 + UAT 预期状态与判据
|
|
44
|
+
5. 分期交付建议 → 全局切期次;每条标终验期;每期计划建议 5–8 个 Milestone
|
|
45
|
+
6. 写入 SPMS → 确认后 requirement_create(draft) + 跨期终验声明 → 回填真实 key
|
|
34
46
|
7. 落盘与交接 → docs/PRD-<代号>.md + 人工补字段清单 + 交给 dev-plan
|
|
35
47
|
```
|
|
36
48
|
|
|
37
|
-
|
|
49
|
+
按用户授权完成对应步骤;只要文档时不要求 SPMS 写入。写库前步骤 2 绝不可跳过——**需求 `*_create` 不幂等**,不查重就是在制造重复需求。
|
|
38
50
|
|
|
39
51
|
## 第 0 步:锚定生命周期位置
|
|
40
52
|
|
|
53
|
+
**文档模式**:用户只要文档或 SPMS 工具不可用时,用已有简报、代码和文档定位产品范围,执行可做的现状核对,跳过 SPMS 调用与项目写入。未知项目/key 明确标未核实,新需求用 `WORK-F1` / `WORK-N1` 等工作号,不虚构实体;有落库需求且工具可用时执行下面的项目定位。
|
|
54
|
+
|
|
41
55
|
SPMS 的生命周期是 `产品线 → 产品 → 版本(Release) → 项目 → 迭代 → Issue`。**需求挂在项目上**,所以先把项目钉死:
|
|
42
56
|
|
|
43
57
|
1. `project_list` → 令牌白名单内的项目;`project_get(projectId)` → 成员名册(memberId 供后续指派)、迭代列表、需求/Issue/用例计数,以及**基本信息七段全量**(`summary` 概述 / `background` 背景 / `personas` 用户与场景 / `goal` 目标 / `nonGoals` 非目标 / `constraints` 约束与前提 / `openQuestions` 开放问题)。
|
|
@@ -57,7 +71,7 @@ SPMS 的生命周期是 `产品线 → 产品 → 版本(Release) → 项目 →
|
|
|
57
71
|
| **开放问题** | `openQuestions` | §5.2 非阻塞开放问题 | **一行一条;无则 `null`** |
|
|
58
72
|
|
|
59
73
|
⚠️ 三个列表字段的每行**不要带 `-` / `*` / `1.` 前缀**——Web 端会当正文清洗掉,自己加等于白写。
|
|
60
|
-
⚠️ `openQuestions` 只回写非阻塞项,每行格式 `Q1 [非阻塞]
|
|
74
|
+
⚠️ `openQuestions` 只回写非阻塞项,每行格式 `Q1 [非阻塞] 问题;默认及理由;负责人;解决节点`;节点用「进入哪期计划前」等,已有外部截止日期则保留;无则传 `null`。阻塞问题未解时不回写项目基本信息。
|
|
61
75
|
⚠️ 名称/状态/负责人/团队/版本等治理字段**不在** `project_update` 范围内(混进去只会被忽略),要改仍走 Web。
|
|
62
76
|
|
|
63
77
|
## 第 1 步:Grilling 需求发现与澄清(产品经理的活)
|
|
@@ -65,9 +79,9 @@ SPMS 的生命周期是 `产品线 → 产品 → 版本(Release) → 项目 →
|
|
|
65
79
|
**Grilling 是本 skill 内置、自包含的对话协议。** 直接执行下述规则,不调用或依赖任何外部 skill。
|
|
66
80
|
|
|
67
81
|
1. **逐条编号 R1…Rn**。它是**原始诉求追踪号**,创建前也暂作工作号;真实 requirement key 仍要等创建时分配(见第 6 步)。用户一句话里常藏着多条需求,拆开;这张清单贯穿全程,最终每条都要有下场。创建后 `R#` 只保留在「承接」与原始诉求追踪表中,不再作为需求编号。
|
|
68
|
-
2. **拆分粒度**:一条需求 =
|
|
82
|
+
2. **拆分粒度**:一条需求 = **一个用户可感知、能独立验收的能力**;不在 PRD 阶段估算 Issue 数来决定粒度。太大(「做一个管理后台」)拆开;太小(「按钮改成蓝色」)合并或降级为 Issue——**不是所有诉求都该成为需求**,该是 Issue 的就说清楚它是 Issue。
|
|
69
83
|
3. 每条至少回答:**谁**(角色/租户内的哪类用户)在**什么场景**下要做什么、**为什么现在做**、**不做会怎样**。
|
|
70
|
-
4. **把需求沟通映射成决策树,不是静态问卷。**
|
|
84
|
+
4. **把需求沟通映射成决策树,不是静态问卷。** 树根是本 PRD 要改变的用户/业务结果;先按六个维度推演产品选择,再让每个决策向下连接依赖它的决策。检查用户与权限边界、领域实体/状态语义、范围边界、体验与 AI 取舍、验收口径、优先级/交付先后、依赖/降级策略,但只展开这次需求真正需要的分支,不把类目当通用清单生搬。
|
|
71
85
|
5. **对话中即时校准领域语言。** 用户用词与既有规范词冲突时,当场指出差异;出现「账号」「状态」「任务」这类含义过载的词时,给出精确候选词并让用户拍板。已确定的项目特有概念记入 PRD 「领域语言」;通用软件词不记。用户对概念/状态的描述与代码或现状不一致时,先核对事实,再把「沿用现状语义还是显式改变」放进决策树。
|
|
72
86
|
6. **按轮处理 frontier。** `frontier` = 前置决策已定、现在就能回答的全部问题。每轮要问完当前整个 frontier;答案依赖本轮另一个未决问题的,留到下一轮,不迫使用户在假设上作答。用 AskUserQuestion(若当前环境可用;否则直接提问),每题编号并给出**你的推荐答案及取舍理由**,然后停下等用户回答:
|
|
73
87
|
|
|
@@ -77,16 +91,16 @@ SPMS 的生命周期是 `产品线 → 产品 → 版本(Release) → 项目 →
|
|
|
77
91
|
```
|
|
78
92
|
|
|
79
93
|
7. **事实是你的作业,决策才是用户的作业。** 能从 SPMS、代码、文档、工具或环境里查到的,先自己查,不拿去问用户。某个事实还在核对时,只暂停它下游的问题;其余 frontier 照常推进。用户已明确回答或现状已确定的不重问。
|
|
80
|
-
8. **用具体业务场景压测语义与边界。** 当关键角色、实体关系或状态变化还显得抽象时,主动构造 2–4 个高信息量的场景,按「给定角色/数据/状态 →
|
|
94
|
+
8. **用具体业务场景压测语义与边界。** 当关键角色、实体关系或状态变化还显得抽象时,主动构造 2–4 个高信息量的场景,按「给定角色/数据/状态 → 业务动作 → 预期状态与判据」询问。优先挑能暴露权限/租户边界、空数据、重复/超限、不允许状态、AI 低质量或前置未就绪的例子;只问与本需求有关的,不做机械全枚举。确认后编为 `S1…Sn`,成为验收标准和 UAT 状态表的上游,不在这里设计测试步骤。
|
|
81
95
|
9. **每轮答案都会重塑决策树。** 记录已定决策及理由,重算 frontier,再问下一轮;不固守最初问题清单。含糊处**不许自行补全成「看起来合理」的需求**。
|
|
82
|
-
10. **把未解项分成阻塞与非阻塞两类。** 会改变用户/权限、范围、FR/NFR 类型、业务语义或验收标准的是**阻塞问题**,必须留在决策树的 frontier,不能靠默认值越过。只有「任何答案都不改变需求含义与验收」的才是**非阻塞问题**;它可从 frontier
|
|
96
|
+
10. **把未解项分成阻塞与非阻塞两类。** 会改变用户/权限、范围、FR/NFR 类型、业务语义或验收标准的是**阻塞问题**,必须留在决策树的 frontier,不能靠默认值越过。只有「任何答案都不改变需求含义与验收」的才是**非阻塞问题**;它可从 frontier 移出,但必须记录当前默认及理由、负责人和解决节点。
|
|
83
97
|
11. **共同理解是进入成文的闸口。** 只有阻塞 frontier 为空——所有分支已访问,没有被默默假设的产品决策——才把「规范词 / 已定决策 / 范围 / 场景 / 验收口径 / 非阻塞开放问题」摘要给用户,请其明确确认。确认后进入 **synthesis 模式**:只综合已有对话与查证结果,不重问、不另起一轮泛化访谈;只有成文时发现真实矛盾或新的阻塞决策,才回到对应分支并在解决后重新确认。确认前可继续事实核对,但不定稿、不更新项目基本信息、不写 SPMS;无法交互时也不得用默认值跨过阻塞问题。
|
|
84
98
|
|
|
85
99
|
## 第 2 步:查重与现状核对
|
|
86
100
|
|
|
87
101
|
本步的查证**不必等需求澄清完全结束才开始**:某个 frontier 问题依赖现状事实时,先执行相应核对,再决定还有没有需要用户拍板的分支。共同理解确认后,再用下面的全量口径做最终查重与现状结论。
|
|
88
102
|
|
|
89
|
-
1. **SPMS 查重**(
|
|
103
|
+
1. **SPMS 查重**(写库红线):逐条 R# 跑 `pms_search(keyword)`(跨需求/Issue/用例,**上限 50 条**,用具体词别用泛词)+ `requirement_list(projectId)` 翻页看全量。命中已有需求 → 改成 `requirement_update` 补充,而不是新建一条并行的。文档模式仍核对已有 PRD/代码,未执行的 SPMS 查重明确标未核实,不得宣称「SPMS 无同类」。
|
|
90
104
|
2. **现状核对**:这个能力是不是已经有了?读宿主 repo 的代码、`CLAUDE.md`、领域词汇/相关决策记录(若有)、文档目录(接入指引与既有 PRD)、历史开发计划、memory 索引。**发现需求与现实冲突(用户以为存在的能力其实没有,或以为没有的其实已经有),或用户用词与既有领域语言/决策约束冲突——如实呈现,把事实与需要拍板的产品决策分开,不要顺着错误假设写下去。**
|
|
91
105
|
3. 结论落一张表,每条 R# 只有四种下场:
|
|
92
106
|
|
|
@@ -101,7 +115,7 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
101
115
|
|
|
102
116
|
**只有第 1 步的阻塞 frontier 已清空且共同理解已获用户确认,才进入本步。**
|
|
103
117
|
|
|
104
|
-
- **目标**:这块能力**做完之后**要达成的**结果**(
|
|
118
|
+
- **目标**:这块能力**做完之后**要达成的**结果**(终局、满足 SMAR),不是要做的功能列表,也不是「首期做到哪」。3-5 条封顶;标清验收门槛、观察指标与 PoC 基线,不把建议值冒充现状或已验证的效果。
|
|
105
119
|
- **非目标**:逐条列出并**给去向**。⚠️ **去向里不许出现「二期 / 后期再做」**——那是分期,不是非目标。凡属于这块能力终局蓝图之内的,一律写成 FR/NFR 进 §3,再到第 5 步排到靠后的期次去;非目标只留**真的不在这份 PRD 能力边界内**的东西(另立项 / 属于别的产品域 / 明确永远不做及理由 / 依赖的底座本身另立项)。**产品经理一半的价值在这张表上**——评审时会被问「那 X 呢」的,都要提前出现在这里。
|
|
106
120
|
- **优先级分档**:本系统里 `priority`(紧急度) 与 `importance`(重要度) **正交**,别混为一谈;两个 MCP 都能写,**两个都要给**。
|
|
107
121
|
- **依赖与前置**:依赖别的 App / 平台底座的,写明「未就绪则本条降级为 X / 推迟到 Y」,不要写成无条件承诺。
|
|
@@ -112,21 +126,21 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
112
126
|
|
|
113
127
|
1. **成文是 synthesis,不是第二次访谈。** 只综合已确认对话、现状查证与非阻塞默认;不重问已回答的问题,不在写作时偷偷发明新范围。若发现矛盾或新阻塞项,精确回到第 1 步的对应分支。
|
|
114
128
|
2. **先从用户视角写清问题,再写期望变化。** 问题陈述要说现在谁被什么阻碍、造成什么影响;不要把待做功能换个语序当成问题。
|
|
115
|
-
3. **一条需求写它的完整能力,不写「本期版本」。**
|
|
116
|
-
4. **验收标准落在最高的可观察业务边界。** 每条 = 谁在什么条件下做什么 →
|
|
129
|
+
3. **一条需求写它的完整能力,不写「本期版本」。** 需求是产品事实,不随交付节奏伸缩——验收标准要覆盖本 PRD 范围内这条能力**做完**该有的全部断言。「边界」写这份 PRD 的能力不含什么,可以指向已明确分工的其他 PRD,不等于整个产品永不做;「这期先不做」是分期边界,属于 §7。粒度仍按「一个用户可感知的能力」定,**不按期次切碎**:一条需求横跨两期是正常的,第 5 步会给它标终验期。
|
|
130
|
+
4. **验收标准落在最高的可观察业务边界。** 每条 = 谁在什么条件下做什么 → 预期状态与通过判据。可用阈值、枚举、集合、相等/不变或明确的是/否;量化指标带作用域、规模/负载、分母/窗口等必要口径。优先断言用户或外部系统真能观察到的结果,不断言内部模块、表、函数或调用次数,不写测试过程。写不出可断言形式的,回第 1 步。
|
|
117
131
|
5. **验收标准的物理格式(平台前端契约,别用 markdown)**:SPMS 把 `acceptanceCriteria` 按 `\n` 切行、trim、丢空行,渲染成圆点列表。**展示端一个字符都不剥**(剥 `- * • 1. 1)` 前缀只发生在 Web 编辑器保存时),所以经 MCP 写进去的前缀会**原样显示**。因此——**一行一条;不要写 `-`/`*`/`1.` 前缀(会显示成「• - xxx」);不要空行分段;不要表格/加粗/嵌套。** 唯一例外是跨期需求的 `[P1] ` 期次前缀(第 6 步),方括号不在剥离表里,写进去就是它。
|
|
118
132
|
6. **PRD 正文(`description`)是完整 markdown**(markdown-it 渲染,标题/列表/表格/代码块都可以)。图片只支持 `` 引用且 MCP 无上传面 → **正文里不要放外链图**。
|
|
119
|
-
7. **NFR 必须带 `category` +
|
|
120
|
-
8.
|
|
133
|
+
7. **NFR 必须带 `category` + 作用域 + 可判断的质量门槛**。性能/容量用数值与条件,安全/易用性也可用明确状态或不变量;不把「安全」「美观」当判据。六档质量属性见 `references/spms-mapping.md`。
|
|
134
|
+
8. **体验与 AI 要成为需求,平台硬约束也要有落点**。信息层级、主路径便捷性、视觉一致性、关键状态及适用的 AI 能力,写入相关 FR/NFR 并给验收条件,不只放在愿景里。多租户隔离、三语 i18n、列表服务端分页、业务错误、席位/计量口径、ACL 可见性等按宿主实际约束写,不默认「大家都知道」。
|
|
121
135
|
9. **只持久化有价值的产品决策。** 会改变范围、领域语义或验收,或未来读者很可能重新争论的,记入「产品决策记录」:结论、未选方案、理由、影响需求。不把每轮问答都抄进去;模块/接口/架构/表结构等实现决策仍属于 dev-plan/架构决策,不进 PRD。
|
|
122
|
-
10. **建立全链路可追溯关系**:原始诉求 → 问题/目标 → `S#` 场景 → FR/NFR → 验收标准 → TC
|
|
123
|
-
11.
|
|
136
|
+
10. **建立全链路可追溯关系**:原始诉求 → 问题/目标 → `S#` 场景 → FR/NFR → 验收标准 → `UAT-#` 预期状态。每个目标有需求承接,每条需求能指回目标/原始诉求,每个关键用户场景有明确状态与验收覆盖;有空白单元格就不算定稿。UAT 不要求 TC 已存在,由 test-plan 后续建立「验收/UAT → TC」映射。
|
|
137
|
+
11. **不写实现方案或测试方法**(见开头边界)。
|
|
124
138
|
|
|
125
139
|
## 第 5 步:分期交付建议(全局盘完之后才做)
|
|
126
140
|
|
|
127
141
|
到这一步,PRD 正文(§0–§6)已经是一张**终局蓝图**。现在才第一次考虑「先上哪些、后上哪些」。**分期只改变交付顺序,不改变需求集合**——不许在这一步删需求、砍验收标准,或把一条需求改小;发现某条确实不该做,回第 3 步把它挪进非目标并给去向,而不是在分期表里让它消失。
|
|
128
142
|
|
|
129
|
-
1. **盘的是全局,不只是这份 PRD 新写的那几条。**
|
|
143
|
+
1. **盘的是全局,不只是这份 PRD 新写的那几条。** 一张分期表要同时收进三类需求,既有需求用**真实 key**,未录入的新需求先用工作号并在创建后回填,逐条标出来源(既有 key 来自第 2 步的查重结果,必须是真查到的):
|
|
130
144
|
- **本 PRD 新建**——第 6 步创建后回填的 `FR-N` / `NFR-N`;
|
|
131
145
|
- **既有需求·本次更新**——第 2 步命中的那些:只说明**本期要动它的哪几行验收**,不重述正文,更不新建一条并行的;若本次改变了它的终验期,在说明里点出来。
|
|
132
146
|
- **既有需求·只作前置**——不属于本 PRD、但某一期必须等它先上才有意义的 key(别的 PRD / 别的项目)。写清依赖方向,**它们不归本 PRD 排期**,只出现在前置列。
|
|
@@ -135,7 +149,7 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
135
149
|
4. **每条需求都要落在分期表里,并标出「终验期」**——终验期 = **整条需求算完成**的那一期:
|
|
136
150
|
- **单期需求**:终验期就是它唯一那一期。
|
|
137
151
|
- **跨期需求**(验收标准分散在两期以上):终验期 = **最后一期**,必须显式标出,并逐期写清「这期完成的是第几行验收」。跨期是正常的,**不要为了让每条都落在单期而把需求切碎**——粒度由「一个用户可感知的能力」决定,不由期次决定。
|
|
138
|
-
5.
|
|
152
|
+
5. **用分期承接 SMAR,不凭空指定开发日期。** 每期开发计划尽量控制在 **5–8 个 Milestone**;因同一用户流程/交付连续性不宜拆开时可到 **9–10 个**,必须说明连续性理由,**最多 10 个**。超过则建议拆成更多期;小范围可少于 5 个,不为凑数增任务。PRD 只给每期价值、覆盖范围、前置和计划规模建议,不预先编排 M1…Mn、实现任务或工期。具体拆解与数量由 dev-plan 核实,超出预算时反馈分期调整,保留完整需求与终验关系。
|
|
139
153
|
6. **分期表定稿后回填两处并保持一致**:§3 每个条目的「分期」行、§7 的期次总览 / 分期矩阵 / 跨期终验登记。条目那一行是要抄进 SPMS `description` 的那份——**SPMS 里的读者看不到 PRD**,两处漂了就等于界面在说谎。
|
|
140
154
|
|
|
141
155
|
## 第 6 步:写入 SPMS
|
|
@@ -145,7 +159,7 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
145
159
|
1. **`type` 必须先定死**。key 前缀在**创建时**按 `type` 分配(`functional`→`FR-N`,`non_functional`→`NFR-N`),序列是**租户级**的(不是项目级,所以编号跨项目连续)。**之后再改 `type`,key 不会跟着改**(平台契约)——建完再改就是永久错配。
|
|
146
160
|
2. **`status` 一律 `draft`**。评审转 `reviewing`、批准转 `approved` 是**人**的动作,不是 Agent 该按的按钮(同 MCP「终态留给人」的既有姿势)。
|
|
147
161
|
3. **建完立刻回填真实 key**:把 `R1 → FR-37` 写回 PRD 文档的追踪表**和 §7 的分期矩阵 / 跨期终验登记表**(第 5 步用工作号排的期,这时换成真实 key)。之后凡是指代需求实体/标题都一律用真实 key;`R#` 只作为原始诉求来源标识,仅出现在「承接」和 §6.1。
|
|
148
|
-
4.
|
|
162
|
+
4. **PRD 不创建 TC**。把关键用户场景、预期状态与验收条件随需求正文写入;若该需求已有 TC,只记录真实关联供 test-plan 查重承接,不补写步骤、不因缺 TC 阻止 PRD 定稿。用户同时要求测试计划时,在 PRD 成文后另按 test-plan 展开。
|
|
149
163
|
5. **跨期需求必须在 SPMS 里自带终验声明。** PRD 文档在 SPMS 之外,而按下「转已上线」的人看的是**需求抽屉**。三处一起写,缺一处这条需求就会在某个界面上说谎:
|
|
150
164
|
- **`description` 开头**固定一段(正文是 markdown,引用块会正常渲染):
|
|
151
165
|
|
|
@@ -157,7 +171,7 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
157
171
|
- **「待人工补」清单里的「版本(release)」挂终验期那一版**,不挂首期——`releaseId` 是单值字段,挂首期会让版本报表把整条需求算成那一版已交付。
|
|
158
172
|
6. **知道那个会被误点的按钮长什么样(平台行为)。** 需求抽屉里,只要**该需求已关联的 Issue 全部完成**、且状态落在交付段(开发中 / 已提交 / 可测试),就会浮出一条绿色提示条,一键把需求转「已上线」。跨期需求首期只挂了首期的 Issue,**首期一完工这个按钮就亮了**——这就是「阶段交付被误记为整条需求完成」的具体发生方式。而需求侧**没有**「已上线」之后的第二个终态,点下去那一下**就是**需求级验收(还会通知需求作者)。所以终验声明必须写在需求正文里,让点按钮的人先看见。
|
|
159
173
|
⚠️ Agent 侧本来就写不到终态(`shipped` / `rejected` 会被拒:`FINAL_STATE_FORBIDDEN`)——这一条不是给你按的,是要你**把话写到他会看到的地方**。
|
|
160
|
-
7. **`importance`(重要度)、`ownerId`(负责人)、`dueDate`(截止日期)三个字段 MCP 可写**,`create` 与 `update`
|
|
174
|
+
7. **`importance`(重要度)、`ownerId`(负责人)、`dueDate`(截止日期)三个字段 MCP 可写**,`create` 与 `update` 都收。重要度必给,负责人已明确则写;**日期仅在用户或外部约束已明确时填写,不为了 SMART 的 T 自动造日期**。`ownerId` 取 `project_get` 成员名册的 `memberId`(只收本租户未撤销成员),`dueDate` 是 ISO 8601;两者传 `null` 清除,更新时未要求清除则保留原值。
|
|
161
175
|
**仍然写不到、必须人工在 Web 补的**(平台契约,核对过 MCP 面的 inputSchema):`release`(版本——跨期需求挂**终验期**那一版)、附件。排期与点数属于规划期(`sprint_plan_items`),**不在 PRD 阶段做**。这些要单列一张「待人工补」清单交付。
|
|
162
176
|
8. **失败就如实说**:`CAPABILITY_REQUIRED`(令牌无 write)、`PROJECT_NOT_ALLOWED`(项目不在白名单)、需求写闸要求 `requirement.manage` 或本项目 Lead——报出缺什么、怎么补,**不要绕道**(比如改去建 Issue)。
|
|
163
177
|
9. **没有 MCP 令牌 / 工具不可用时不要假装写入**:产出文档 + 一份「照此在 Web 逐条建单」的清单(字段逐个给值),并明说未写入。
|
|
@@ -167,28 +181,32 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
167
181
|
1. **落盘** `docs/PRD-<代号>.md`(循宿主 repo 的文档目录惯例)。代号按**能力域**取(讲清这份 PRD 覆盖什么),**不必与 dev-plan 的代号对齐**——PRD 与开发计划是**多对多**:一份 PRD 可拆成多份计划,多份 PRD 的需求也常被合并进同一份计划。**唯一的关联键是 `FR-N`/`NFR-N` key,不是文件名。** 目标文件已存在时先确认再覆盖。
|
|
168
182
|
2. **自检**(逐项过,不过的回去改):
|
|
169
183
|
- R1…Rn 逐条有下场(新建 key / 更新 key / 已可用 / 显式排除并给去向),**一条都没吞**;
|
|
170
|
-
-
|
|
184
|
+
- 六维推演有实质取舍与需求落点,产品满足 SMAR;适用的 UX/UI 与 AI 能力没有停在口号,范围仍在用户约束内;
|
|
185
|
+
- 每条 FR 的验收标准 ≥1 条且**每条都能断言**;每条 NFR 有 `category` + 作用域 + 质量门槛;
|
|
171
186
|
- 非目标表覆盖了所有「评审会被问到」的相邻功能,且**没有一条去向写着「二期 / 后期再做」**(那类应已成为 FR/NFR 并排进 §7 的靠后期次);
|
|
172
187
|
- §0–§6 全篇按终局写,没有「本期先只做…」混进目标 / 行为 / 边界;
|
|
173
188
|
- **每条需求(含本次更新的既有 key)在 §7 分期矩阵里都有一行,且都标了终验期**;跨期的另在 §7.3 登记,并在 SPMS 里三处齐:`description` 终验块 + `acceptanceCriteria` 逐行 `[P#]` 前缀 + 版本挂终验期;
|
|
174
189
|
- §3 每个条目的「分期」行与 §7 分期矩阵逐字一致;分期表引用的既有 key 都是第 2 步真查到的;
|
|
175
|
-
-
|
|
190
|
+
- 每期都能说清「哪个角色多了什么以前做不到的事」,不是按技术栈切的;承接计划建议 5–8 个 Milestone,9–10 个有连续性理由,无超过 10 个的建议;
|
|
176
191
|
- 项目特有概念使用同一套规范词,没有未解的重载词/状态语义冲突;
|
|
177
|
-
- 关键场景已压测业务边界,「原始诉求 → 目标/场景 → FR/NFR → 验收标准 →
|
|
192
|
+
- 关键场景已压测业务边界,「原始诉求 → 目标/场景 → FR/NFR → 验收标准 → UAT 预期状态」追踪表无空白单元格;相关的成功、空数据、拒绝、取消、失败恢复及 AI 降级状态有清晰判据;
|
|
178
193
|
- 会影响范围/语义/验收的已定产品决策都留了结论与理由,没有混入实现决策;
|
|
179
|
-
-
|
|
180
|
-
-
|
|
194
|
+
- 全篇没有自行设计的实现方案(表结构/端点/库选型/技术里程碑)或测试方法(脚本/工具/注入步骤);产品交互、已有约束与验收条件未被误删;
|
|
195
|
+
- 已录入需求用回填后的真实 FR/NFR key,未录入新需求明确标工作号;`R#` 只在「承接」与 §6.1 作原始诉求来源标识;
|
|
181
196
|
- 引用的代码路径/既有能力都是本次真读过的(同 dev-plan 的「不虚构核实」)。
|
|
182
|
-
- 阻塞 frontier
|
|
183
|
-
3. **汇报**给用户时,除了文档路径,单独列出:①
|
|
197
|
+
- 阻塞 frontier 已清空,共同理解已获用户确认;仅剩的非阻塞开放问题都有默认/理由/负责人/解决节点。否则只能作为草稿,且未写入 SPMS。
|
|
198
|
+
3. **汇报**给用户时,除了文档路径,单独列出:① **非阻塞开放问题**及默认/负责人/解决节点(若尚有阻塞问题,必须明说文档仅是草稿且未落库);② 调查中发现的、与用户假设**冲突的事实**;③ 你砍掉/推迟的范围(让用户有机会否决);④ **已写入 SPMS 的 key 清单**(FR/NFR)与本次回写的**项目基本信息段**(照第 0 步第 5 条的表);⑤ **待人工补**的字段(版本,以及评审后的状态流转——MCP 可写字段不列进这张清单);⑥ **分期建议**:每期交付什么用户价值、覆盖哪些 key、承接计划的 Milestone 预算及例外理由,并**逐条点名跨期需求的终验期**——「FR-38 首期完成后仍停在交付段,不得转已上线」这句话要出现在汇报里,不能只躺在文档里。
|
|
184
199
|
4. **交给 dev-plan(PRD 与计划是多对多,没有固定映射)**:交接的单位是 **`FR-N`/`NFR-N` key 的集合**,不是整份文档——一份 PRD 可拆给多份计划,一份计划也可以捞起好几份 PRD 里的需求合并做。计划取它覆盖的那组 key 当 dev-plan 第 1 步的 `R1..Rn`,计划结尾的「需求 → 设计映射」表逐条指回 SPMS 实体。SPMS 侧的落点是 `plan_create(projectId, title, requirementKeys=[...])` → `PLAN-N`,正文写回走 `plan_update({content})`——`requirementKeys` 就是这层多对多关系的实体。
|
|
185
200
|
⚠️ **一个 `PLAN-N` 只能挂同一项目的需求**:`requirementKeys` 里出现别的项目的 key 会被拒(报 `LIFECYCLE_MISMATCH`,平台契约)。跨项目的需求要合并做,只能一个项目一份计划,或先把需求迁到同一项目。
|
|
186
201
|
⚠️ **终验期必须随 key 一起交出去**:一份只覆盖 P1 的计划,里程碑全绿也**不代表**其中的跨期需求可以置「已上线」。交接说明里逐条写清「本计划完成后 FR-38 仍停在交付段,终验在 P2」——否则计划验收那一刻就会有人去点那个按钮。
|
|
187
|
-
|
|
202
|
+
**怎么拆解是 dev-plan 的判断**(技术依赖、里程碑、可交付性);PRD 的 §7 分期给的是**产品侧信号**与**每期 5–8 个、连续性例外最多 10 个 Milestone 的计划规模要求**,不是技术任务表。调整期次时同步更新验收分配和终验声明,不能仅在计划中悄悄提前终验。
|
|
203
|
+
**交给 test-plan**:同一组需求 key + 逐行验收标准 + UAT 场景预期状态 + 外部前置;由它选择测试方法、补齐数据/步骤/工具、查重并创建 TC。PRD 可在尚无 TC 时独立成立。
|
|
188
204
|
|
|
189
205
|
## 红线(任何情况下不违反)
|
|
190
206
|
|
|
191
207
|
- **不写实现方案。** how 是 dev-plan 的活;PRD 越界一次,后面就会有两份互相打架的设计。
|
|
208
|
+
- **不把 UAT 写成测试计划。** PRD 定场景预期状态与清晰的验收条件;怎么测及 TC 创建交给 test-plan。
|
|
209
|
+
- **不以创新为由越过约束,也不只转录用户清单。** 六维推演要落实可验收的用户价值,用 SMAR 收敛。
|
|
192
210
|
- **不虚构验收。** 写不出可断言形式的就标开放问题,不许用「体验流畅」「性能良好」占位。
|
|
193
211
|
- **不把分期当成需求裁剪。** 正文按终局全景写;交付节奏只出现在 §7,不许倒过来用「这期做不完」删需求、砍验收标准或把需求写小。非目标的去向里不许写「二期」。
|
|
194
212
|
- **不把阶段交付记成整条需求完成。** 跨期需求的终验期要在 PRD、需求 `description`、验收标准前缀三处都写明;「已上线」是整条需求的验收,不是某一期的完工。
|
|
@@ -205,8 +223,8 @@ R4 待拍板 → 依赖「是否面向全员」的决策,已问
|
|
|
205
223
|
|
|
206
224
|
**仅当你就在 xgent-ai-portal 门户仓内工作时适用;装在其他 repo 的忽略本节(下述路径在你的 repo 里不存在)。**
|
|
207
225
|
|
|
208
|
-
- **SPMS 接入**:MCP 工具 `mcp__xgent-pms__*`(`project_list`/`project_get`/`project_update`/`pms_search`/`requirement_
|
|
226
|
+
- **SPMS 接入**:MCP 工具 `mcp__xgent-pms__*`(`project_list`/`project_get`/`project_update`/`pms_search`/`requirement_*`)。契约与错误码见 `docs/pms-mcp.md`;字段/枚举/写面缺口速查见 `references/spms-mapping.md`。
|
|
209
227
|
- **文档落盘**:PRD → `docs/PRD-<大写代号>.md`(代号按能力域取);下游开发计划 → `goal/<大写代号>.md`(dev-plan skill,模板 `goal/PLAN-TEMPLATE.md`)。**两侧代号互不绑定**——PRD : 计划是**多对多**(既拆也合),靠 `FR-N`/`NFR-N` key 串联(SPMS 侧即 `plan_create(requirementKeys)`,同项目内)。
|
|
210
228
|
- **平台硬约束**(需求侧口径,该进 NFR 就进):多租户隔离(全表 `tenantId`);业务状态一律 200 + `{ok,data}`;列表服务端分页 `Page<T>`;三语 i18n(zh-CN/en/zh-TW);字典表 `sort` 规范;前端两步法(`impeccable` 设计 + 真浏览器验证)。
|
|
211
229
|
- **已知坑来源**:当前 agent 提供的本项目记忆(若有,先看 `MEMORY.md` 索引)、根 `CLAUDE.md`、`goal/*-PROGRESS.md`。
|
|
212
|
-
- **下游**:PRD 定稿后接 `dev-plan` skill 出开发计划,再由计划拆 Issue
|
|
230
|
+
- **下游**:PRD 定稿后接 `dev-plan` skill 出开发计划,再由计划拆 Issue 进迭代;接 `test-plan` skill 将场景状态与验收条件展开为测试用例。
|