outcome-htt
Log what happened after delivering a pitch -- capture results, reflections, and push learnings back to audience profiles and professional profile. Use when user says 'log outcome', 'how did it go', 'it went well/badly'.
What this skill does
<purpose>
Log the outcome of a delivered pitch. Captures what happened, what resonated, what didn't, user reflections, and next steps. Pushes learnings back to audience profiles (in shared/people/) and the professional profile. Updates goal status.
</purpose>
<steps>
<step id="load-config" number="1">
<description>Load Configuration</description>
<load-config>
Resolve the user's home directory (run `echo $HOME` via Bash). Use this absolute path for all file operations below -- never pass `~` to the Read tool.
1. Read `<home>/.things/config.json`
<if condition="config-missing">Tell the user: "Run `/things:setup-things` first." Then stop.</if>
</load-config>
</step>
<step id="select-campaign" number="2">
<description>Select Campaign and Goal</description>
<if condition="campaign-id-in-arguments">
Read `<home>/.things/heres-the-thing/campaigns/<campaign-id>/campaign.json`.
</if>
<if condition="no-campaign-id">
Scan `<home>/.things/heres-the-thing/campaigns/*/campaign.json`. List active campaigns with goals that have status `active` or `delivered`.
Use AskUserQuestion to select one.
</if>
<if condition="goal-id-in-arguments">
Select the matching goal.
</if>
<if condition="no-goal-id-and-multiple-goals">
Use AskUserQuestion to select a goal.
</if>
<if condition="single-active-goal">
Auto-select it.
</if>
Show the goal summary: description, audience, medium, target date, current status.
</step>
<step id="gather-outcome" number="3">
<description>Gather Outcome</description>
<phase name="result" number="1">
Use AskUserQuestion:
How did it go?
<options>
- Succeeded -- got what I wanted
- Approved with conditions -- partial success
- Deferred -- they want to think about it / come back later
- Pivoted -- conversation went a different direction
- Failed -- didn't land
</options>
</phase>
<phase name="narrative" number="2">
Use AskUserQuestion (free text):
What happened? Give me the story. (Brief narrative of what occurred)
</phase>
<phase name="what-landed" number="3">
Use AskUserQuestion (free text):
What resonated? What points or framings landed well? (List the things that worked)
</phase>
<phase name="what-didnt" number="4">
Use AskUserQuestion (free text):
What didn't work? What fell flat or backfired? (List the things that didn't land)
</phase>
<phase name="reflections" number="5">
Use AskUserQuestion (free text):
Any personal reflections? ("I fumbled when...", "I nailed the...", "Next time I would...")
</phase>
<phase name="next-steps" number="6">
Use AskUserQuestion (free text):
What are the next steps? (Action items coming out of this)
</phase>
<phase name="goal-status" number="7">
Use AskUserQuestion:
Update goal status?
<options>
- active -- still in progress
- delivered -- pitch delivered, waiting for result
- succeeded -- achieved the goal
- failed -- goal not achieved
- pivoted -- goal changed direction
</options>
</phase>
<phase name="tags" number="8">
Auto-suggest outcome tags from: result type, audience names, medium, what_landed keywords.
Ask user to confirm/edit.
</phase>
</step>
<step id="write-outcome" number="4">
<description>Write Outcome</description>
<output-path>`<home>/.things/heres-the-thing/campaigns/<campaign-id>/outcomes/<goal-id>-<timestamp>.json`</output-path>
```json
{
"goal_id": "<goal-id>",
"date": "<current_date>",
"tags": ["<outcome-tags>"],
"result": "<result>",
"goal_status_update": "<new-status>",
"narrative": "<narrative>",
"what_landed": ["<items>"],
"what_didnt": ["<items>"],
"user_reflections": "<reflections>",
"feedback_to_system": {
"audience_updates": {},
"user_skill_updates": {
"strengths": [],
"weaknesses": []
}
},
"next_steps": ["<items>"]
}
```
</step>
<step id="update-goal-status" number="5">
<description>Update Goal Status</description>
Read campaign.json. Update the goal's `status` field. Write the updated campaign.json.
</step>
<step id="feedback-loop" number="6">
<description>Push Feedback to System</description>
<phase name="audience-updates" number="1">
For each person in the goal's audience:
<if condition="person-has-shared-profile">
Read `<home>/.things/shared/people/<person-ref>/profile.md`.
Extract audience-specific learnings from `what_landed`, `what_didnt`, and `user_reflections`:
- Communication style preferences observed
- Decision-making patterns observed
- Concerns that proved important
- Effective/ineffective framings
Append a new section to the person's profile.md:
```markdown
## Insights from <campaign-id> (<date>)
- <learnings>
```
Store in `feedback_to_system.audience_updates`:
```json
{
"<person-ref>": "<summary of learnings>"
}
```
</if>
</phase>
<phase name="user-skill-updates" number="2">
Read `<home>/.things/shared/professional-profile.json`.
Extract self-learnings from `what_landed` (→ strengths) and `what_didnt` + `user_reflections` (→ weaknesses).
<if condition="new-strengths-identified">
Add to `building_skills` if not already present. Store in `feedback_to_system.user_skill_updates.strengths`.
</if>
<if condition="new-weaknesses-identified">
Store in `feedback_to_system.user_skill_updates.weaknesses` for reference by future strategy briefs.
</if>
<constraint>Only update professional-profile.json if there are clear, concrete skill insights. Don't add vague entries.</constraint>
</phase>
<phase name="update-outcome-feedback" number="3">
Read the outcome file written in step 4. Update `feedback_to_system` with the actual updates made. Write the updated outcome file.
</phase>
</step>
<step id="confirm" number="7">
<description>Confirm</description>
<completion-message>
Outcome logged for `<campaign-id>` / `<goal-id>`.
Result: <result>
Goal status: <old> → <new>
Feedback pushed:
<if condition="audience-updated">- Audience insights added to <person-ref>'s profile</if>
<if condition="skills-updated">- Professional profile updated with new skill insights</if>
<if condition="no-feedback">- No system feedback pushed (no clear insights to record)</if>
<if condition="has-next-steps">
Next steps recorded:
<list next_steps>
</if>
<if condition="parent-goal-exists">
Parent goal `<parent-id>` has <n> of <total> sub-goals completed.
</if>
</completion-message>
</step>
</steps>
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.