Claude
Skills
Sign in
Back

thing-i-did

Included with Lifetime
$97 forever

Log a professional experience - accomplishments, lessons, expertise, decisions, influence, or insights. Extracts context from arguments or conversation history for fast capture, or runs a full guided interview when context is sparse.

General

What this skill does


<purpose>
Walk the user through capturing a professional experience with enough depth and structure to be useful for resumes, interviews, and blog posts later. When the user provides rich context (pasted transcript, decision summary, or detailed description), extract fields automatically and confirm before writing. When context is sparse, fall back to a full guided interview that adapts based on the evidence type.
</purpose>

<steps>

  <step id="load-configuration" number="1">
    <description>Load Configuration</description>

    <load-config>
      <action>Resolve the user's home directory.</action>
      <command language="bash" output="home" tool="Bash">echo $HOME</command>
      <constraint>Never pass `~` to the Read tool.</constraint>

      <read path="<home>/.things/config.json" output="config" />
      <if condition="config-missing">Tell the user: "Run `/things:setup-things` first." Then stop.<exit /></if>

      <read path="<home>/.things/shared/professional-profile.json" output="profile" />

      <read path="<home>/.things/i-did-a-thing/preferences.json" output="preferences" />
      <if condition="preferences-missing">Tell the user: "Run `/setup-idat` first." Then stop.<exit /></if>
    </load-config>
  </step>

  <step id="load-professional-context" number="2">
    <description>Load Professional Context</description>

    <action>Read the professional profile from `<home>/.things/shared/professional-profile.json` -- the `current_role`, `target_roles`, `career_direction`, `building_skills`, and `aspirational_skills` fields. This context shapes which follow-up questions to ask and how to tag the entry.</action>

    <action>Read default tags from `<home>/.things/i-did-a-thing/preferences.json`.</action>
  </step>

  <step id="assess-available-context" number="3">
    <description>Assess Available Context</description>

    Determine whether there is enough context to take a fast path (extract and confirm) or whether a full interview is needed.

    <substep name="check-interview-flag">
      <description>Check for Interview Flag</description>
      <if condition="interview-flag-set">Strip the flag and jump to Step 4 (full interview). Use any remaining text after the flag as the brief description / starting point.</if>
    </substep>

    <substep name="gather-context">
      <description>Gather Context</description>

      <action>Collect context from two sources:</action>
      - `$ARGUMENTS`: The text the user passed directly to the skill
      - Conversation history: Prior messages in the current session that describe a professional experience

      <if condition="no-relevant-context">Jump to Step 4 (full interview).</if>

      <constraint>
      What counts as relevant context:
      - Descriptions of work done, decisions made, problems solved, lessons learned, expertise applied, influence exercised, or patterns observed
      - Project/task specifics -- codebase names, team context, stakeholder interactions, timelines, outcomes
      </constraint>

      <constraint>
      What does NOT count:
      - Code debugging sessions or casual chat that isn't about a professional experience
      - Prior skill runs (like `/practice-wdyd`) -- these are not themselves loggable events
      - Generic greetings or unrelated conversation
      </constraint>
    </substep>

    <substep name="extract-log-fields">
      <description>Extract Log Fields</description>

      <action>Attempt to extract all log fields from the combined context.</action>

      Required fields -- must be present or inferrable for the fast path:
      - `title` -- descriptive title for the entry
      - `evidence_type` -- accomplishment, lesson, expertise, decision, influence, or insight
      - `impact` -- major, notable, solid, or learning
      - `category` -- technical, leadership, communication, problem-solving, process, growth, expertise, decision-making, or influence
      - `skills_used` -- cross-reference against the user's `building_skills` and `aspirational_skills` from profile
      - Body section content -- the narrative sections for this evidence type (see the table in Step 9)

      Optional fields -- extract if present, skip if not:
      - `description` -- 1-2 sentence summary
      - `tags` -- searchable tags
      - `skills_developed` -- new skills learned or grown
      - `target_alignment` -- which professional targets this supports (from profile)
      - `role_at_time` -- the user's role when this happened
      - `team_or_org` -- team or organization context
      - `duration` -- how long this took
      - `metrics` -- quantifiable outcomes

      <constraint>Project/task context preservation: When the context references a specific project, codebase, tool, or task, capture that specificity in the body sections, in `team_or_org`, and in tags. Don't generalize away the details -- "redesigned MyApp's prompt routing system" is better than "improved a system."</constraint>

      <action>Classify each field as:</action>
      - **confident** -- clearly stated or directly quotable from the context
      - **inferrable** -- reasonably derivable from the context
      - **missing** -- not enough information to determine
    </substep>

    <substep name="decision-gate">
      <description>Decision Gate</description>

      <if condition="fast-path-eligible">
      Take the fast path (continue to "Present Summary"). Requires:
      - `evidence_type` is confident or inferrable, AND
      - At least 3 of the evidence type's body sections have confident content
      </if>

      <if condition="fast-path-not-eligible">Jump to Step 4 (full interview), carrying whatever was extracted as a head start so the user doesn't repeat themselves.</if>
    </substep>

    <substep name="present-summary">
      <description>Present Summary for Confirmation</description>

      <ask-user-question>
        <question>Show everything extracted as a structured summary:
        - Title, evidence type, impact, category
        - Each body section with a preview (first 1-2 sentences)
        - Skills used/developed
        - Tags (auto-generated)
        - Any optional fields that were extracted</question>
        <option>Looks good -- proceed to fill gaps (if any) or directly to tag review (Step 8)</option>
        <option-with-text-input>Some changes needed -- provide corrections</option-with-text-input>
        <option>Full interview instead -- jump to Step 4 with the extracted title as starting point</option>
      </ask-user-question>
    </substep>

    <substep name="fill-gaps">
      <description>Fill Genuine Gaps</description>

      <action>For each required field or body section still classified as missing, ask ONE focused question -- reuse the question text from the evidence-type interview in Step 6. Do not ask situational follow-ups on the fast path. After gaps are filled, proceed to Step 8 (tag review).</action>
    </substep>

    <if condition="multiple-loggable-events">Identify the primary one and mention the others. Offer to log the rest afterward (by running the skill again).</if>
  </step>

  <step id="start-interview" number="4">
    <description>Start the Interview</description>

    This is the full interview path -- used when context is sparse, when the user passes `--interview`, or when the user opts out of the fast path at the summary step.

    <if condition="partial-extraction-available">Use it as the starting point. Acknowledge what you already know: "I have some context already -- let me fill in the details." Skip questions whose answers are already confident.</if>

    <if condition="no-context-extracted">Ask the opening question:</if>

    <ask-user-question>
      <question>What's on your mind? Could be something you built, a lesson you learned, a topic you went deep on, a decision you shaped -- anything worth remembering.</question>
    </ask-user-question>
  </step>

  <step id="classify-evidence-type" number="5">
    <description>Classify th

Related in General