Receber por email
← Voltar para o catálogo

log-evidence

Record findings from completed offline human tasks (interviews, observations, outreach) back into the canvas. The re-entry point after /mycelium:handoff.

35estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add haabe/mycelium

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/log-evidence/svg)](https://www.skillteca.com.br/skills/log-evidence)
#ai

Skills relacionadas

Ver todas de Produtividade →

Alerta por categoria

Receba novas skills de Produtividade toda segunda

1 email curto, só com as skills novas de Produtividade. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Log Evidence Skill

The re-entry point after offline human work. Takes raw conversation notes, observations, or survey results and integrates them into the canvas with proper provenance.

Preflight: Read target canvas file(s) before any Write/Edit

Hard rule. Before issuing Write or Edit against any .claude/canvas/*.yml, use the Read tool on that file in this session. Claude Code's Read-before-Write check requires the Read tool specifically — cat/head/grep via Bash do NOT satisfy it.

Edit vs Write — different cost profiles (verified 2026-05-14):

  • Edit (exact-string replacement): Read with limit: 1 satisfies the check at ~50 tokens. State-tracking is per-file, not per-byte — subsequent Edit calls work anywhere in the file. Use this for partial updates against large canvas files (e.g., purpose.yml at 800+ lines).
  • Write (full replacement): do a full Read first. Write obliterates the file; you should see what you're about to replace. The limit:1 shortcut is not appropriate here.

ID-bearing entries — scan the ID space before assigning (added 2026-05-15, v0.23.19): When adding a new component, opportunity, solution, or any other ID-bearing entry to a canvas file, run a Bash grep first to confirm the next ID in your prefix sequence is actually free:

grep "^  - id: <prefix>-" .claude/canvas/<file>.yml | sort -u

Replace <prefix> with the canvas's ID prefix (comp for landscape, opp for opportunities, sol for solutions, ht for human-tasks, etc.). Then pick the next free integer. validate_canvas.py has a duplicate-ID check (lines 230-239) that catches the failure on CI, but a duplicate can persist in the working tree for days if CI isn't run between edit and discovery — see roadmap-repo corrections.md 2026-05-15 "Duplicate canvas ID created in landscape.yml" for the worked example.

Original failure mode: anti-pattern #7 instance #5, 2026-05-09 — agent conflated Bash head with the Read tool, lost ~14k tokens to a Write-fail → remedial-full-Read → re-Write loop. The limit:1 discipline (graduated 2026-05-14, v0.23.18) prevents the second-order cost where the agent correctly follows the rule but full-Reads every time. The ID-scan discipline (graduated 2026-05-15, v0.23.19) prevents the related class where the agent reads enough of the file to satisfy the Edit check but not enough to see existing ID assignments — kin to anti-pattern #8 (Stale State Read).

If this skill writes to multiple canvas files, register each one first (limit:1 for Edit-only paths; full Read for Write paths) AND ID-scan any prefix you intend to assign.

See CLAUDE.md Canvas writes — Read before Write for the canonical rule.

When to Use

  • After completing a human task from .claude/canvas/human-tasks.yml
  • When the user returns from an offline conversation and has findings to record
  • When SessionStart reminds about pending human tasks and the user has completed them
  • When the user pastes conversation notes or interview summaries

Workflow

  1. Check pending tasks:
  2. Read .claude/canvas/human-tasks.yml for pending_tasks
  3. List them: "You have [N] pending human task(s): [objective summaries]"
  4. Ask: "Which task did you complete? Or paste your notes and I'll match them."
  1. Guided evidence capture (if user doesn't have a filled template):
  2. Who did you talk to? (role and context, not name -- privacy)
  3. What did you learn? (open-ended first, let them tell the story)
  4. Any direct quotes worth capturing?
  5. Anything surprising or contradicting our current assumptions?
  6. JTBD signals: functional job, emotional job, social job?
  7. Any follow-up conversations needed?
  1. Classify the evidence on Gilad's ladder:
  2. Single conversation -> anecdotal (0.3)
  3. 2 conversations with consistent signals -> anecdotal (0.3), note convergence
  4. 3+ triangulated conversations -> data-supported (0.5-0.6)
  5. Explain the classification: "One conversation is anecdotal evidence. We'd need 2-3 more to call it data-supported."
  1. Update canvas provenance:
  2. Identify the relevant canvas file and section (from the task's canvas_refs)
  3. Close the learning-target loop (per engine/canvas-guidance.yml#learning_target_coupling): if any answered question carried a [target → <file>#<anchor>] tag, route the captured evidence to that exact entry, then prompt whether the open gap can now move — ON HOLD → OPEN, RE-GATED → met, or a confidence bump. Logging the evidence and retiring the gap are separate steps; the tag makes the second one explicit. If the awaited answer did NOT arrive, say so — the absence is itself a finding (the gap stays open with a note).
  4. If the canvas entry has NO provenance object yet (early project), create one:

```yaml provenance: evidence_type: anecdotal # single conversation evidence_sources:

  • "interview-YYYY-MM-DD-[role-descriptor]"

source_classes:

  • external_human

captured_at: "YYYY-MM-DDTHH:MM:SSZ" confidence: 0.3 ```

  • If provenance already exists: add to evidence_sources and source_classes arrays
  • Update evidence_type if the new evidence strengthens it
  • Update confidence score with explicit reasoning
  • Update captured_at timestamp
  1. Close the source task — coupled to the evidence-write, not a separate afterthought (.claude/canvas/human-tasks.yml):

Writing evidence and closing the task that produced it are one action, not two. The drift /canvas-health sub-check 8c(b) catches — "evidence exists but the task is still open" — forms precisely when step 4 lands and this step is skipped. Do not report the evidence as logged until this is done.

  • Default (evidence answers the task): move the task from pending_tasks to completed_tasks. Record: completed_at, evidence_logged_to (the canvas file#anchor from step 4), key_findings, source_class: external_human.
  • Partial (some signal, task not fully answered): keep the task in pending_tasks but append to its partial_findings[] (with date + evidence_logged_to) AND state out loud why it stays open and what's still missing — otherwise 8c(b) will flag it next health pass. An un-narrated open task with evidence attached is the drift, not the fix.
  • Registry sync (prevents 8c(c) drift): if this evidence came from a named contributor whose consent or attribution state changed as a result of the conversation (e.g. they granted naming permission), update the canonical attribution registry ($MYCELIUM_ATTRIBUTION_REGISTRY or the private companion repo's .claude/memory/attribution-registry.yml) in the same pass — the registry is canonical (Check 33 reads it). If the registry isn't accessible in this context, say so and leave a note rather than recording consent only in auto-memory (the mismatch 8c(c) exists to catch). Never print a generic_only / project-name carve-out value into output.

Task Cancellation

If the user reports a task couldn't be completed (contact unavailable, timing didn't work, etc.):

  1. Ask: "Should we cancel this task or reschedule it?"
  2. If cancel: move to completed_tasks with source_class: cancelled and a note explaining why
  3. If reschedule: update the task's objective or target_persona if needed, keep in pending_tasks
  4. Either way: "The evidence gap still exists. Consider /mycelium:handoff to plan an alternative approach."
  1. Check for contradictions:
  2. Compare findings against existing canvas data
  3. If findings contradict assumptions: flag clearly
  4. "This contradicts [canvas section / assumption]. The user said [X] but we assumed [Y]."
  5. Suggest: "Consider running /mycelium:devils-advocate to stress-test this assumption, or update the canvas with /mycelium:canvas-update."
  6. If findings support assumptions: note the confirmation
  7. "This supports [ca
Compartilhar X LinkedIn