map
Show literature-to-chapter coverage and the writing progress dashboard — which sources support which chapters, and word counts against targets.
Install
npx skills add https://github.com/yha9806/academic-writing-toolkit/tree/main/.claude/skills/map
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install yha9806-academic-writing-toolkit@llmmart
git clone https://github.com/yha9806/academic-writing-toolkit.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole yha9806/academic-writing-toolkit collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
/map — Literature-Thesis Mapping Skill
Purpose
Build and display a mapping matrix showing which literature sources support which thesis chapters. Identify coverage gaps where chapters lack sufficient source support.
Trigger Words
This skill activates on: map, show mapping, coverage, which sources, /map.
Workflow
Scan all notes files in
literature/reading_notes/using Glob (*_NOTES.md). For each file, extract:- Author and title (from the
# Reading Notes:heading) Statusfield valueRelevancefield value- All rows from the
## Thesis Connectionstable
- Author and title (from the
Scan chapter files in
chapters/to get the list of chapters and their section headings.Build the mapping matrix. Rows are sources (sorted alphabetically by author), columns are chapters (Ch1 through Ch8 or however many exist).
- Mark each cell with the connection type if a mapping exists (e.g.,
supports,challenges,extends). - Leave cells empty if no connection.
- Mark each cell with the connection type if a mapping exists (e.g.,
Identify coverage gaps. Flag any chapter that has fewer than 3 mapped sources as "under-covered".
Add the progress dashboard. Count chapter words deterministically with
node .claude/skills/map/scripts/count-words.mjs --base-dir . --json(never estimate word counts by reading), compare against the per-chapter targets inCLAUDE.md, and count notes files byStatusvalue (reading / completed / integrated).Output the mapping and dashboard.
Output Format
## Literature-Thesis Mapping -- {YYYY-MM-DD}
### Matrix
| Source | Status | Ch1 | Ch2 | Ch3 | Ch4 | Ch5 | Ch6 | Ch7 | Ch8 |
|--------|--------|-----|-----|-----|-----|-----|-----|-----|-----|
| Smith (2024) | integrated | | supports | supports | | | | | |
| Jones (2021) | integrated | extends | supports | supports | extends | | | | |
| Lee (2019) | completed | | | supports | | | challenges | | challenges |
### Coverage Summary
| Chapter | Mapped Sources | Status |
|---------|---------------|--------|
| Ch1 | {N} | OK / Under-covered |
| Ch2 | {N} | OK / Under-covered |
### Under-covered Chapters
{List chapters with < 3 sources, with suggestions for which completed-but-not-yet-mapped notes might fill the gap.}
Saving the Matrix
If the user says "save" or "export mapping", write the matrix to literature/mapping_matrix.md using Edit (if the file exists) or Write (if creating new). Include a timestamp header.
Gap Threshold
- Under-covered: fewer than 3 mapped sources per chapter.
- This threshold can be adjusted if the user specifies a different minimum.
Constraints
- Read-only by default. Only modify files if the user explicitly asks to save the matrix.
- No emoji in output.
- No hardcoded chapter count. Detect chapters dynamically from the
chapters/directory. - Source names use the format
{Author} ({Year})for readability. - Connection types are derived from the
Connection Typecolumn in notes files. If a notes file lacks the table or fails the contract lint (notes-lint.mjs, the command/notenames in its step 7), list it under "Unparseable notes files" instead of inferring cells — a broken file must surface as an error, never as a guessed mapping. - Word counts come from the bundled counter, never from model estimation. It counts whitespace-delimited words, including Markdown tokens, as the former
wc -winstruction did; continuous Chinese text is not counted character by character.
Files (academic-writing-toolkit)
-
scripts
-
count-words.mjs 2 KB · in bundle
-
-
SKILL.md 3.7 KB
--- name: map description: Show literature-to-chapter coverage and the writing progress dashboard — which sources support which chapters, and word counts against targets. allowed-tools: Read, Glob, Grep, Edit, Write, Bash(node *) --- # /map — Literature-Thesis Mapping Skill ## Purpose Build and display a mapping matrix showing which literature sources support which thesis chapters. Identify coverage gaps where chapters lack sufficient source support. ## Trigger Words This skill activates on: `map`, `show mapping`, `coverage`, `which sources`, `/map`. ## Workflow 1. **Scan all notes files** in `literature/reading_notes/` using Glob (`*_NOTES.md`). For each file, extract: - Author and title (from the `# Reading Notes:` heading) - `Status` field value - `Relevance` field value - All rows from the `## Thesis Connections` table 2. **Scan chapter files** in `chapters/` to get the list of chapters and their section headings. 3. **Build the mapping matrix.** Rows are sources (sorted alphabetically by author), columns are chapters (Ch1 through Ch8 or however many exist). - Mark each cell with the connection type if a mapping exists (e.g., `supports`, `challenges`, `extends`). - Leave cells empty if no connection. 4. **Identify coverage gaps.** Flag any chapter that has fewer than 3 mapped sources as "under-covered". 5. **Add the progress dashboard.** Count chapter words deterministically with `node .claude/skills/map/scripts/count-words.mjs --base-dir . --json` (never estimate word counts by reading), compare against the per-chapter targets in `CLAUDE.md`, and count notes files by `Status` value (reading / completed / integrated). 6. **Output the mapping and dashboard.** ## Output Format ``` ## Literature-Thesis Mapping -- {YYYY-MM-DD} ### Matrix | Source | Status | Ch1 | Ch2 | Ch3 | Ch4 | Ch5 | Ch6 | Ch7 | Ch8 | |--------|--------|-----|-----|-----|-----|-----|-----|-----|-----| | Smith (2024) | integrated | | supports | supports | | | | | | | Jones (2021) | integrated | extends | supports | supports | extends | | | | | | Lee (2019) | completed | | | supports | | | challenges | | challenges | ### Coverage Summary | Chapter | Mapped Sources | Status | |---------|---------------|--------| | Ch1 | {N} | OK / Under-covered | | Ch2 | {N} | OK / Under-covered | ### Under-covered Chapters {List chapters with < 3 sources, with suggestions for which completed-but-not-yet-mapped notes might fill the gap.} ``` ## Saving the Matrix If the user says "save" or "export mapping", write the matrix to `literature/mapping_matrix.md` using Edit (if the file exists) or Write (if creating new). Include a timestamp header. ## Gap Threshold - **Under-covered**: fewer than 3 mapped sources per chapter. - This threshold can be adjusted if the user specifies a different minimum. ## Constraints 1. **Read-only by default.** Only modify files if the user explicitly asks to save the matrix. 2. **No emoji** in output. 3. **No hardcoded chapter count.** Detect chapters dynamically from the `chapters/` directory. 4. **Source names** use the format `{Author} ({Year})` for readability. 5. **Connection types** are derived from the `Connection Type` column in notes files. If a notes file lacks the table or fails the contract lint (`notes-lint.mjs`, the command `/note` names in its step 7), list it under "Unparseable notes files" instead of inferring cells — a broken file must surface as an error, never as a guessed mapping. 6. **Word counts** come from the bundled counter, never from model estimation. It counts whitespace-delimited words, including Markdown tokens, as the former `wc -w` instruction did; continuous Chinese text is not counted character by character.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.