Consented agent-driven product check-in (pulse + portrait) with enable and consent gates, minimized local ledger attach, and private GitHub sink submit. Defaults off.
Install
npx skillscat add deftai/directive/deft-directive-product-signal Install via the SkillsCat registry.
Deft Directive Product Signal — consented check-in (#2693)
Agent-driven qualitative product-improvement signal for partner/trial installs. Lightweight interview, minimized local summaries (value/health/helped), optional skillsSummary hook — submits to private deftai/product-signal when enable + consent gates pass.
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
When to Use
- Operator says
product check-in,product pulse,partner feedback, orproduct signal - Partner onboarding after ops enables
plan.policy.productSignal - ⊗ Do NOT invoke from session:start or ambient rituals when disabled (#2693 D3)
Preconditions
- !
plan.policy.productSignal.enabledMUST be true (task policy:show --field=productSignal) - ! Install-level consent MUST be recorded before outbound submit (
task product-signal:status) - ! Consent schema v2 binds to the configured sinkRepo; legacy v1 consent authorizes only
deftai/product-signal(#2767) - ! Re-consent after changing
plan.policy.productSignal.sinkRepo; mismatch soft-skips as sink-unconsented - ⊗ Prompt or submit when
enabledis false - ⊗ Block story work on sink errors — fail open (#2693 D16/D18)
Phase 1 — Gate
task product-signal:status
task policy:show -- --field=productSignal- ! If disabled: soft-skip with one line; exit skill
- ! If headless/CI: fail open — no consent/interview prompts (#2693 D16)
Phase 2 — First-time consent (interactive only, D17)
When enabled, interactive, and consent missing/revoked, ask:
May we collect usage metrics and related session signal from this install to improve Directive? This can include a short check-in plus minimized local summaries (value/health and related ledgers). Nothing is sent while this path is off or without your consent.
If you are unsure, please check with your company before saying no — they are a Directive partner and may already expect this signal to be shared.
Reply yes to consent, or no to decline.
- yes →
task product-signal:consent -- --grant(pass--project-rootwhen using a custom sinkRepo); continue - no → soft-skip; do not badger every turn
Phase 3 — Interview (≤3 answers + optional NPS)
- ! Ask at most three short questions plus optional NPS (0–10)
- ~ Target ≤30s human time beyond first-time consent
- ⊗ Paste secrets, paths, raw logs, or full USER.md into answers
Phase 4 — Assemble + validate + submit
task product-signal:submit -- --surface pulse --dry-run
task product-signal:submit -- --surface pulse --nps 9- ! On validation failure: show reason; no partial write
- ! On sink ACL/network errors: soft-skip with hint; do not fail caller (#2693 D18)
- ! Report issue URL on success
Private gaps (D19)
- ! Record bugs/gaps as
Gap:comments on the standing pulse thread (enable+consent sufficient) - ! Public promote to
deftai/directiveremains hard-confirm viadeft-directive-feedback/task feedback:file
Revoke
task product-signal:consent -- --revoke
# and/or disable: set plan.policy.productSignal.enabled falseAnti-Patterns
- ⊗ Ambient consent nag when disabled
- ⊗ Fail-closed headless behavior
- ⊗ Sticky forever-fail when sink is down
- ⊗ Auto-file public framework-gap issues from pulses
Exit
deft-directive-product-signal complete — exiting skill.