From ai-brain-starter
Synthesizes resolved Slack thread markdown into typed Meta/ memory entries (decisions, exceptions, workflows). Invoke /synth-thread-to-sop <thread-md-file> for one-time decisions, deviations, or procedures.
npx claudepluginhub adelaidasofia/ai-brain-starter<slack-thread-markdown-file> [--vault-root PATH] [--dry-run]This skill uses the workspace's default tool permissions.
Turn a resolved Slack thread into a typed memory entry. The script first classifies the thread (decision, exception, or workflow definition) using deterministic signals, then writes a typed file at the right location with the right schema.
Synthesizes typed workflow SOP markdown files from merged GitHub PR exports into Meta/Workflows/. Extracts title as name, description/commits/reviews as steps. Trigger /synth-pr-to-sop <pr-path> post-merge.
Triages raw unstructured input like transcripts and brain dumps into evaluated thread inventories and synthesized gold-found files across extract-evaluate-synthesize phases.
Extracts key decisions, takeaways, action items with DRIs, and open questions from meeting transcripts, notes, or Slack threads. Handles single meetings or weekly batches.
Share bugs, ideas, or general feedback.
Turn a resolved Slack thread into a typed memory entry. The script first classifies the thread (decision, exception, or workflow definition) using deterministic signals, then writes a typed file at the right location with the right schema.
After a thread reaches a resolution worth filing. Examples:
The script classifies the thread by counting decision-language hits, exception-language hits, and step-language hits. Highest-scoring class wins. Good for clearly structured threads. Run:
python3 skills/synth-thread-to-sop/synth.py <thread-path> --vault-root <vault>
Default and recommended. The script writes a draft. Then Claude reads the source thread, refines the classification if wrong, fills in fields the heuristic missed, and writes the final file. No external LLM API call is made by the script.
The argument is a single Slack thread markdown file. Expected structure (any of these is fine):
External Inputs/Slack/<channel>/<date>.md**user (timestamp):** message linesthread_url, root_ts, or permalinkThe script extracts the thread URL or root timestamp from frontmatter first, then from the body if absent.
python3 skills/synth-thread-to-sop/synth.py <thread-path> --vault-root <vault>
Output (one of):
Meta/Decisions/<sha8>.md if classified as a decisionMeta/Exceptions/<sha8>.md if classified as an exceptionMeta/Workflows/<sha8>.md if classified as a workflowThe <sha8> is the first 8 chars of a sha1 of the thread root ts (or URL if no ts). Idempotent.
If the classification looks wrong, override with --classify-as decision|exception|workflow. Then read the file and improve fields with the Edit tool.
python3 -c "import yaml; yaml.safe_load(open('<vault>/Meta/Decisions/<sha8>.md').read().split('---')[1])"
If the YAML parses, the file is valid.
All entries share these fields:
type: decision | exception | workflow
source_thread_url: <permalink-or-root-ts>
sha8: <8-char hash>
memory_class: episodic (decisions) | procedural (workflows, exceptions)
creationDate: <iso>
entity_ids:
slack: <root-ts>
provenance:
- source_type: slack
source_id: <root-ts>
source_url: <permalink>
Type-specific fields follow the schemas in templates/schemas/.
The script counts hits for each class:
Highest score wins. Ties resolve toward decision (the most common shape). Use --classify-as to override.
When Meta/.entity-aliases.json exists (built by scripts/entity-disambiguator.py), this skill consults it during entity extraction. Each detected mention writes both raw_mention and canonical_entity into the entity_mentions frontmatter list, so downstream queries can group variant spellings under one canonical form. Operator overrides at Meta/entity-aliases-overrides.json always win. When the index is missing, canonical_entity falls back to the raw mention.
--force.confidence: 0.3 and flag for refinement.