@geraldmaron/construct 1.0.6 → 1.0.8
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 +39 -34
- package/bin/construct +1403 -96
- package/commands/build/feature.md +1 -1
- package/commands/build/fix.md +1 -1
- package/commands/design/access.md +1 -1
- package/commands/design/flow.md +1 -1
- package/commands/design/ui.md +1 -1
- package/commands/measure/experiment.md +1 -1
- package/commands/measure/metrics.md +1 -1
- package/commands/measure/results.md +1 -1
- package/commands/plan/api.md +1 -1
- package/commands/plan/challenge.md +1 -1
- package/commands/plan/decide.md +1 -1
- package/commands/plan/feature.md +1 -1
- package/commands/plan/requirements.md +1 -1
- package/commands/remember/context.md +1 -1
- package/commands/remember/handoff.md +1 -1
- package/commands/remember/runbook.md +1 -1
- package/commands/review/code.md +1 -1
- package/commands/review/quality.md +1 -1
- package/commands/review/security.md +1 -1
- package/commands/ship/ready.md +1 -1
- package/commands/ship/release.md +1 -1
- package/commands/ship/status.md +1 -1
- package/commands/understand/docs.md +1 -1
- package/commands/understand/this.md +1 -1
- package/commands/understand/why.md +1 -1
- package/commands/work/clean.md +1 -1
- package/commands/work/drive.md +1 -1
- package/commands/work/optimize-prompts.md +2 -2
- package/commands/work/parallel-review.md +1 -1
- package/db/schema/007_tags.sql +30 -0
- package/db/schema/008_skill_usage.sql +24 -0
- package/db/schema/009_scheduler.sql +14 -0
- package/examples/internal/roles/architect/bad/clever-plan-without-contracts.md +1 -1
- package/examples/internal/roles/architect/golden/explicit-tradeoff-before-plan.md +1 -1
- package/examples/internal/roles/engineer/bad/speculative-abstraction.md +1 -1
- package/examples/internal/roles/engineer/golden/read-before-write.md +1 -1
- package/examples/internal/roles/qa/bad/coverage-theater.md +1 -1
- package/examples/internal/roles/qa/golden/regression-gate.md +1 -1
- package/examples/seed-observations/decisions.md +1 -1
- package/lib/audit-skills.mjs +3 -3
- package/lib/auto-docs.mjs +8 -8
- package/lib/boundary.mjs +126 -0
- package/lib/cache-strategy-google.js +26 -31
- package/lib/cli-commands.mjs +276 -122
- package/lib/comment-lint.mjs +139 -1
- package/lib/completions.mjs +1 -1
- package/lib/config/schema.mjs +15 -1
- package/lib/contracts/validate.mjs +371 -0
- package/lib/daemons/contract.mjs +210 -0
- package/lib/distill.mjs +22 -4
- package/lib/doc-stamp.mjs +48 -0
- package/lib/docs-verify.mjs +59 -6
- package/lib/doctor/cli.mjs +16 -1
- package/lib/doctor/index.mjs +3 -1
- package/lib/doctor/watchers/consistency.mjs +360 -0
- package/lib/doctor/watchers/mcp-protocol.mjs +232 -0
- package/lib/document-extract.mjs +420 -17
- package/lib/document-ingest.mjs +2 -0
- package/lib/embed/cli.mjs +124 -3
- package/lib/embed/daemon.mjs +43 -4
- package/lib/embed/docs-lifecycle.mjs +1 -1
- package/lib/embed/inbox.mjs +50 -3
- package/lib/embed/role-framing.mjs +3 -3
- package/lib/embed/scheduler.mjs +33 -5
- package/lib/env-config.mjs +9 -3
- package/lib/evaluator-optimizer.mjs +2 -3
- package/lib/extractors/calendar.mjs +173 -0
- package/lib/extractors/shared/drop-info.mjs +22 -0
- package/lib/extractors/transcript.mjs +0 -0
- package/lib/gates-audit.mjs +8 -2
- package/lib/git-hooks/prepare-commit-msg +1 -1
- package/lib/headhunt.mjs +2 -2
- package/lib/hooks/agent-tracker.mjs +6 -11
- package/lib/hooks/comment-lint.mjs +16 -0
- package/lib/hooks/guard-bash.mjs +35 -14
- package/lib/hooks/mcp-audit.mjs +14 -1
- package/lib/hooks/pre-compact.mjs +92 -5
- package/lib/hooks/pre-push-gate.mjs +41 -8
- package/lib/hooks/proactive-activation.mjs +0 -14
- package/lib/hooks/registry-sync.mjs +2 -2
- package/lib/hooks/rule-verifier.mjs +217 -0
- package/lib/hooks/session-optimize.mjs +2 -1
- package/lib/hooks/stop-notify.mjs +7 -6
- package/lib/host-capabilities.mjs +10 -1
- package/lib/hygiene/scan.mjs +141 -0
- package/lib/init-unified.mjs +73 -65
- package/lib/install/stage-project.mjs +4 -4
- package/lib/intake/classify.mjs +309 -58
- package/lib/intake/daemon.mjs +121 -0
- package/lib/intake/filesystem-queue.mjs +31 -6
- package/lib/intake/intake-config.mjs +2 -1
- package/lib/intake/postgres-queue.mjs +45 -3
- package/lib/intake/prepare.mjs +3 -1
- package/lib/intake/quarantine.mjs +205 -0
- package/lib/intake/session-prelude.mjs +7 -1
- package/lib/intake/traceability.mjs +90 -0
- package/lib/knowledge/postgres-search.mjs +132 -0
- package/lib/knowledge/research-store.mjs +2 -0
- package/lib/knowledge/search.mjs +14 -4
- package/lib/maintenance/cleanup.mjs +315 -0
- package/lib/mcp/memory-bridge.mjs +276 -0
- package/lib/mcp/server.mjs +11 -3
- package/lib/mcp/tools/skills.mjs +32 -11
- package/lib/mcp/tools/workflow.mjs +25 -0
- package/lib/mcp-catalog.json +12 -8
- package/lib/mcp-platform-config.mjs +16 -8
- package/lib/migrations/index.mjs +106 -0
- package/lib/migrations/v1-baseline.mjs +33 -0
- package/lib/model-registry.mjs +1 -1
- package/lib/observation-store.mjs +9 -4
- package/lib/opencode-runtime-plugin.mjs +1 -1
- package/lib/orchestration-policy.mjs +4 -4
- package/lib/outcomes/record.mjs +2 -0
- package/lib/overrides/resolver.mjs +3 -3
- package/lib/parity.mjs +4 -4
- package/lib/policy/engine.mjs +2 -2
- package/lib/profiles/lifecycle.mjs +1 -1
- package/lib/profiles/rebrand.mjs +46 -0
- package/lib/project-init-shared.mjs +12 -0
- package/lib/prompt-metadata.mjs +4 -4
- package/lib/provider-capabilities.js +20 -7
- package/lib/providers/auth-manager.mjs +58 -17
- package/lib/providers/circuit-breaker.mjs +14 -0
- package/lib/providers/contract.mjs +67 -3
- package/lib/providers/creds.mjs +219 -0
- package/lib/providers/scaffold.mjs +107 -0
- package/lib/reflect.mjs +49 -12
- package/lib/role-preload.mjs +5 -0
- package/lib/roles/catalog.mjs +1 -1
- package/lib/roles/manifest.mjs +2 -2
- package/lib/scheduler/index.mjs +112 -0
- package/lib/scheduler/solo.mjs +183 -0
- package/lib/server/index.mjs +29 -29
- package/lib/server/insights.mjs +14 -12
- package/lib/server/langfuse-login.mjs +58 -0
- package/lib/server/static/assets/index-ab25c707.js +1 -1
- package/lib/session-store.mjs +6 -4
- package/lib/setup.mjs +14 -3
- package/lib/{agent-contracts-enforce.mjs → specialist-contracts-enforce.mjs} +4 -4
- package/lib/{agent-contracts.mjs → specialist-contracts.mjs} +9 -8
- package/lib/{agents → specialists}/postconditions.mjs +3 -3
- package/lib/{agents → specialists}/schema.mjs +6 -6
- package/lib/status.mjs +13 -11
- package/lib/storage/backup.mjs +2 -2
- package/lib/tags/lifecycle.mjs +278 -0
- package/lib/tags/vocabulary.mjs +140 -0
- package/lib/telemetry/client.mjs +5 -1
- package/lib/telemetry/otel-tracer.mjs +184 -0
- package/lib/telemetry/skill-calls.mjs +73 -12
- package/lib/uninstall/uninstall.mjs +1 -1
- package/lib/update.mjs +1 -1
- package/lib/validator.mjs +57 -56
- package/lib/version.mjs +51 -0
- package/lib/worker/trace.mjs +5 -1
- package/lib/workflows/instantiate.mjs +320 -0
- package/package.json +16 -3
- package/personas/construct.md +5 -3
- package/platforms/claude/CLAUDE.md +1 -1
- package/rules/common/development-workflow.md +2 -1
- package/rules/common/no-fabrication.md +69 -0
- package/rules/common/review-before-change.md +58 -0
- package/scripts/{sync-agents.mjs → sync-specialists.mjs} +171 -68
- package/skills/ai/prompt-optimizer.md +3 -3
- package/skills/exploration/dependency-graph-reading.md +98 -0
- package/skills/exploration/tracer-bullet-method.md +71 -0
- package/skills/exploration/unknown-codebase-onboarding.md +91 -0
- package/skills/operating/change-management.md +91 -0
- package/skills/operating/incident-response.md +75 -0
- package/skills/operating/oncall-rotation.md +95 -0
- package/skills/operating/orchestration-reference.md +2 -2
- package/skills/strategy/competitive-landscape.md +75 -0
- package/skills/strategy/market-research-methods.md +87 -0
- package/skills/strategy/narrative-arc.md +77 -0
- package/skills/strategy/pricing-positioning.md +94 -0
- package/specialists/contracts.json +1002 -0
- package/specialists/contracts.schema.json +83 -0
- package/specialists/policy-inventory.json +160 -0
- package/{agents → specialists}/prompts/cx-accessibility.md +3 -1
- package/{agents → specialists}/prompts/cx-ai-engineer.md +3 -1
- package/{agents → specialists}/prompts/cx-architect.md +3 -1
- package/{agents → specialists}/prompts/cx-business-strategist.md +3 -1
- package/{agents → specialists}/prompts/cx-data-analyst.md +3 -1
- package/{agents → specialists}/prompts/cx-data-engineer.md +3 -1
- package/{agents → specialists}/prompts/cx-debugger.md +3 -1
- package/{agents → specialists}/prompts/cx-designer.md +3 -1
- package/{agents → specialists}/prompts/cx-devil-advocate.md +3 -1
- package/{agents → specialists}/prompts/cx-docs-keeper.md +4 -2
- package/{agents → specialists}/prompts/cx-engineer.md +4 -2
- package/{agents → specialists}/prompts/cx-evaluator.md +3 -1
- package/{agents → specialists}/prompts/cx-explorer.md +3 -1
- package/{agents → specialists}/prompts/cx-legal-compliance.md +3 -1
- package/{agents → specialists}/prompts/cx-operations.md +3 -1
- package/{agents → specialists}/prompts/cx-orchestrator.md +4 -2
- package/{agents → specialists}/prompts/cx-platform-engineer.md +3 -1
- package/{agents → specialists}/prompts/cx-product-manager.md +3 -1
- package/{agents → specialists}/prompts/cx-qa.md +3 -1
- package/{agents → specialists}/prompts/cx-rd-lead.md +3 -1
- package/{agents → specialists}/prompts/cx-release-manager.md +3 -1
- package/{agents → specialists}/prompts/cx-researcher.md +3 -1
- package/{agents → specialists}/prompts/cx-reviewer.md +4 -2
- package/{agents → specialists}/prompts/cx-security.md +3 -1
- package/{agents → specialists}/prompts/cx-sre.md +4 -2
- package/{agents → specialists}/prompts/cx-test-automation.md +3 -1
- package/{agents → specialists}/prompts/cx-trace-reviewer.md +5 -3
- package/{agents → specialists}/prompts/cx-ux-researcher.md +3 -1
- package/{agents → specialists}/registry.json +651 -418
- package/{agents → specialists}/role-manifests.json +8 -8
- package/templates/docs/construct_guide.md +6 -6
- package/templates/docs/skill-artifact.md +1 -1
- package/templates/provider-scaffold/health.test.mjs +30 -0
- package/templates/provider-scaffold/index.mjs +48 -0
- package/templates/workflows/cross-team-handoff.yml +85 -0
- package/templates/workflows/engineering-onboarding.yml +77 -0
- package/templates/workflows/new-feature.yml +53 -0
- package/agents/contracts.json +0 -387
- /package/{agents → specialists}/teams.json +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
skills/strategy/pricing-positioning.md (Pricing and Positioning)
|
|
3
|
+
Use when setting or revisiting price, defining positioning vs. competitors,
|
|
4
|
+
or preparing a go-to-market argument. Covers value-based vs. cost-plus
|
|
5
|
+
pricing, willingness-to-pay research techniques, and positioning statement
|
|
6
|
+
construction.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
# Pricing and Positioning
|
|
10
|
+
|
|
11
|
+
Use when the team needs to set price, adjust positioning, or defend either to stakeholders.
|
|
12
|
+
|
|
13
|
+
## Pricing frameworks
|
|
14
|
+
|
|
15
|
+
### Value-based pricing
|
|
16
|
+
|
|
17
|
+
Start with what the customer gains, not what it costs to build. The price ceiling is the customer's economic gain from using your product minus their switching cost.
|
|
18
|
+
|
|
19
|
+
**Steps:**
|
|
20
|
+
1. Quantify the value delivered, in the customer's unit (hours saved, revenue unlocked, risk reduced).
|
|
21
|
+
2. Identify the next-best alternative and what it costs (incumbent tool + implementation overhead).
|
|
22
|
+
3. Set price at a fraction of the value gap: price = (your value - alternative value) × capture rate.
|
|
23
|
+
4. Validate with willingness-to-pay research before launch.
|
|
24
|
+
|
|
25
|
+
**Common errors:**
|
|
26
|
+
- Using your cost structure to set price (cost-plus): this leaves value on the table in strong positions and is still wrong in weak ones.
|
|
27
|
+
- Anchoring to competitor prices without understanding how your value proposition differs.
|
|
28
|
+
- Conflating "what customers say they'll pay" with "what they will actually pay". Stated WTP runs 30-50% high.
|
|
29
|
+
|
|
30
|
+
### Cost-plus pricing
|
|
31
|
+
|
|
32
|
+
Only appropriate when:
|
|
33
|
+
- You are a commodity supplier and buyers have full price transparency.
|
|
34
|
+
- Regulatory pricing constraints apply (government contracts, utilities).
|
|
35
|
+
- You are bootstrapping and need a floor to ensure viability before you can run value-based research.
|
|
36
|
+
|
|
37
|
+
Cost-plus is not a strategy. It's a default that tells the market your cost structure rather than your value.
|
|
38
|
+
|
|
39
|
+
### Usage-based pricing
|
|
40
|
+
|
|
41
|
+
Aligns price with value delivery but creates revenue volatility. Use when:
|
|
42
|
+
- Customers have highly variable usage patterns.
|
|
43
|
+
- The value delivered scales linearly with usage.
|
|
44
|
+
- You have the metering infrastructure to make billing transparent.
|
|
45
|
+
|
|
46
|
+
Hybrid: commitment floor (predictable baseline) + usage above the floor (aligned with value). This is the SaaS standard for developer tools.
|
|
47
|
+
|
|
48
|
+
## Willingness-to-pay research
|
|
49
|
+
|
|
50
|
+
### Van Westendorp Price Sensitivity Meter
|
|
51
|
+
|
|
52
|
+
Ask four questions on a single scale:
|
|
53
|
+
1. At what price would this be so cheap you'd question the quality?
|
|
54
|
+
2. At what price would this be a bargain?
|
|
55
|
+
3. At what price would it start to seem expensive but still worth considering?
|
|
56
|
+
4. At what price is it too expensive?
|
|
57
|
+
|
|
58
|
+
Plot cumulative curves. The "acceptable range" is between the intersection of (1) and (4). The "optimal price point" is near the intersection of (3) and the indifference curve.
|
|
59
|
+
|
|
60
|
+
**Limitation:** results are hypothetical. Use as a directional range, not a point estimate.
|
|
61
|
+
|
|
62
|
+
### Conjoint analysis
|
|
63
|
+
|
|
64
|
+
Present respondents with product configurations at different price points and ask which they prefer. Reveals the marginal value of each attribute, including price. More accurate than Van Westendorp for comparing pricing structures (per-seat vs. per-usage vs. flat).
|
|
65
|
+
|
|
66
|
+
Requires 200+ responses and statistical analysis. Use when pricing structure is the key decision.
|
|
67
|
+
|
|
68
|
+
## Positioning
|
|
69
|
+
|
|
70
|
+
Positioning is a choice of *who you are for and who you are not for*. It is not a tagline.
|
|
71
|
+
|
|
72
|
+
### Positioning statement structure
|
|
73
|
+
|
|
74
|
+
> For [target customer] who [has this specific job or problem], [product] is [category] that [delivers this specific outcome]. Unlike [nearest alternative], we [key differentiator].
|
|
75
|
+
|
|
76
|
+
The differentiator must be:
|
|
77
|
+
- Verifiable (testable claim, not aspiration).
|
|
78
|
+
- Meaningful to the target customer (not just technically impressive).
|
|
79
|
+
- Defensible over 18+ months (not easily replicated).
|
|
80
|
+
|
|
81
|
+
### Positioning traps
|
|
82
|
+
|
|
83
|
+
- **Category confusion**: claiming to be in a new category when the customer already has a mental model for what you are. Usually better to reframe the category you're in than to invent a new one.
|
|
84
|
+
- **Feature positioning**: describing capabilities instead of outcomes. Features are implementation; outcomes are the job.
|
|
85
|
+
- **Everything to everyone**: broad positioning appeals to no one. Pick the beachhead segment where you can win cleanly, then expand.
|
|
86
|
+
|
|
87
|
+
### Competitive positioning
|
|
88
|
+
|
|
89
|
+
You have three options against an entrenched competitor:
|
|
90
|
+
1. **Flank**: attack a segment they ignore or underserve.
|
|
91
|
+
2. **Reframe**: define the category differently so your attributes are the evaluation criteria.
|
|
92
|
+
3. **Displace**: only viable with 10x improvement on the customer's most important job dimension.
|
|
93
|
+
|
|
94
|
+
Never directly attack a category leader's strongest attribute. You will spend more defending their position than building your own.
|