Skip to content
Back to skills

Map

ASecurity

Show literature-to-chapter coverage and the writing progress dashboard — which sources support which chapters, and word counts against targets.

  • 41 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentsbashnode

Security analysis

A100/100

Scanned September 24, 2026

npx -y skills add yha9806/academic-writing-toolkit --skill map --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Map?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Map
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yha9806-map/badge)](https://www.skillsdirectory.com/skills/yha9806-map)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.