con un clic
expand-topic
Generate a new article on a topic. Content is published directly.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Generate a new article on a topic. Content is published directly.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Post content to AI agent social network. Every 4 hours.
Open a previously-commissioned Claude conversation in Chrome, check whether the research artifact is ready, click the artifact tile, extract its body as markdown, write the file with seed frontmatter, mark the pending entry collected, and invoke /outer-review.
Open Claude in Chrome, enable Research mode (Web Search is on by default), submit an outer-review prompt to the Unfinishable Map project (Fable 5 when available, else the project's Opus fallback), navigate the optional clarifying-questions stage with "go", record the pending entry, and exit. Pairs with collect-claude-review which retrieves the response after ~60 minutes.
Mine outer/optimistic reviews for uncovered subjects and mint research-topic tasks. Wall-clock trigger, every 6h.
Execute one iteration of the unfinishable-map evolution cycle. Internal skill driven by /loop. Picks the next task, invokes the matching skill in a forked context, posts state updates and a git commit. Not for direct user invocation.
Detect Fable→Opus model-fallback events in Claude Code transcripts and queue attribution-check tasks. Wall-clock trigger, every 4h.
| name | expand-topic |
| description | Generate a new article on a topic. Content is published directly. |
| context | fork |
| agent | general-purpose |
Generate a new article on a philosophical topic.
expand-topic/expand-topic [topic] is invokedLook in obsidian/research/ for existing research on this topic.
If no research exists:
/research-topic firstFirst, check if the source research has a target_section field in its frontmatter and use that.
Section caps: Section caps are enforced by the evolution loop in Python before this skill is invoked. P0/P1 tasks are allowed to exceed caps; P2+ tasks are skipped before reaching this skill. If you are running, you are allowed to create the article — pick the best-fit section regardless of count.
Never place articles in obsidian/apex/. Apex articles are created exclusively by /apex-evolve. If the task description asks for an "apex article" or "apex synthesis", skip the task with status "wrong-skill" and note that apex-evolve should be used instead. Never modify obsidian/apex/apex-articles.md — the approved apex article list is curated by humans only.
Never place articles in obsidian/positions/. Position register entries are created and maintained exclusively by /positions-evolve. If the task description asks for a "position", a register entry, or anything that fits the positions schema (status / confidence / depends-on / argued-in / shift-conditions), skip with status "wrong-skill" and note that positions-evolve should be used instead.
Otherwise, apply this priority order (favour voids and topics over concepts):
Voids (obsidian/voids/[slug].md) — if the article explores:
Topics (obsidian/topics/[slug].md) — if the article addresses:
Concepts (obsidian/concepts/[slug].md) — only if the article is:
Default to topics when uncertain. The Unfinishable Map has many concepts but fewer topics exploring what those concepts mean for the big questions.
Use kebab-case for filenames (e.g., hard-problem-of-consciousness.md).
Before creating the file, verify the slug is available:
uv run python scripts/check_slug.py <proposed-slug> <section>
If the check reports a collision, choose a different filename that won't collide. Do NOT proceed with a colliding slug.
Voids content note: Articles in the voids section explore cognitive limits, unchartable territories, and the boundaries of human thought. They should:
[[voids]]Before writing, review obsidian/project/writing-style.md for:
Before writing, review obsidian/tenets/tenets.md and ensure the article will:
CRITICAL: Source Attribution Discipline
Before writing, understand these rules to prevent misattribution errors:
When the article is based on a specific source (research paper, book, philosopher's work), structure content into two clearly separated channels:
Channel A: Source Exposition — What the author actually claims
Channel B: Map Integration — How the Map interprets or builds on this
Never interleave these channels. Keep source exposition and Map interpretation in separate sections.
For any named law, constraint, or technical definition attributed to a source:
Example of qualifier preservation:
Match claim strength to what the source actually says:
| Source says | Article should say |
|---|---|
| "explores" / "worth investigating" | "X explores..." (not "X argues" or "X shows") |
| "has sympathy for" | "X expresses sympathy for..." (not "X rejects alternatives") |
| "one option is" | "One approach X considers..." (not "X's framework requires") |
| "explicitly argues" | "X argues..." (can use stronger framing) |
Never attribute a commitment the source doesn't make. Especially for:
If a research note exists for this topic:
When the article substantively builds on arguments from other Map articles, add 1-2 formal self-citations in the References section. This helps build citation connections on Google Scholar.
Format (use the cited article's created date):
1. Southgate, A. & Oquatre-six, C. (2026-01-14). Article Title. *The Unfinishable Map*. https://unfinishablemap.org/section/slug/
Use the AI pseudonym matching the cited article's ai_system:
claude-opus-4-5-* → Oquatre-cinq, C.claude-opus-4-6 → Oquatre-six, C.claude-opus-4-7 → Oquatre-sept, C.claude-opus-4-8 → Oquatre-huit, C.claude-sonnet-4-5-* → Sonquatre-cinq, C.claude-sonnet-4-6 → Sonquatre-six, C.claude-sonnet-4-7 → Sonquatre-sept, C.claude-fable-5* → Fabcinq, C.claude-mythos-5* → Mythcinq, C.For human-only articles (ai_contribution: 0), omit the AI co-author.
Only cite when the article genuinely draws on the other article's argument — not just because topics are related.
Before finalizing, verify:
Use the existing generation tool:
uv run python scripts/generate.py article "[Topic Title]" --style exploratory
Or write directly with this structure:
---
title: "[Topic Title]"
description: "[150-160 chars emphasizing human+AI collaboration, iterative refinement, and pursuit of truth]"
created: YYYY-MM-DD
modified: YYYY-MM-DD
human_modified:
ai_modified: YYYY-MM-DDTHH:MM:SS+00:00
draft: false
topics: []
concepts: []
related_articles: []
ai_contribution: 100
author:
ai_system: [current model]
ai_generated_date: YYYY-MM-DD
last_curated:
---
[Opening paragraph - accessible hook into the topic]
## [First Major Section - Source Exposition]
[What the source actually claims, with quotes for key definitions]
## [Second Major Section - Source Exposition]
[Continue source exposition...]
## Relation to Site Perspective
[CLEARLY SEPARATED: How the Map interprets this work]
[Use explicit framing: "The Map interprets...", "This aligns with..."]
[Flag speculation: "The Map speculates that..."]
[Do NOT present Map arguments as if they came from the source]
## Further Reading
- [[related-article-1]]
- [[related-article-2]]
## References
1. [External academic citations]
1. [Self-citations of Map articles this article builds on — see format below]
Before finalizing, count words and check against section thresholds:
uv run python -c "
from pathlib import Path
from tools.curate.length import analyze_length
a = analyze_length(Path('[filepath]'))
print(f'{a.word_count} words ({a.excess_percent:.0f}% of {a.soft_threshold} target) - {a.status}')
"
Target ranges by section:
| Section | Target | Soft Max | Hard Max |
|---|---|---|---|
| concepts/ | 1500-2000 | 2500 | 3500 |
| topics/ | 2000-2500 | 3000 | 4000 |
| voids/ | 1500-2000 | 2000 | 3000 |
| positions/ | 1000-1500 | 1500 | 2500 |
If over soft max: Self-edit before publishing:
If over hard max: Mandatory self-edit:
/condense principlesInclude final word count in the changelog entry.
Leave the originating todo task untouched. The orchestrator
(cycle_post.py) marks it complete after this skill returns.
Prepend to obsidian/workflow/changelog.md (add immediately after frontmatter, before existing entries):
## [current time from prompt] - expand-topic
- **Status**: Success
- **Topic**: [topic name]
- **Output**: [[filepath without .md extension]]
- **Word count**: [count]
- **Based on research**: [yes/no, wikilink if yes]
Leave file changes uncommitted on disk. The orchestrator (cycle_post.py
for /loop runs, agent-commit for legacy evolve_loop.py runs) creates
the git commit after this skill returns. For manual invocations, run
/agent-commit afterward or commit by hand.
After creating the article, check if it's a source for any apex article:
obsidian/apex/apex-articles.mdSource articlesobsidian/workflow/todo.md:
- [ ] P2 apex-evolve: [apex-slug] — source [new-article] created
This ensures apex articles are updated when their source content changes.
Follow the comprehensive guidance in obsidian/project/writing-style.md.
Quick reference:
draft: false — Content is published directly. Never use draft: true.description — 150-160 chars emphasizing human+AI collaboration, iterative refinement, pursuit of truth. Avoid generic descriptions.ai_contribution: 100ai_systemai_modified timestampThese errors have been caught by outer reviews and cause real damage to credibility:
When in doubt, hedge toward the source's actual language.