Skills write headers by the canon's part boundaries, and warn about tabs
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- markdown
- Domain
- devtools, documentation
Research direction
Start with the canon block in docs/reference/authoring-formats.md (section Indentation, Where a part starts and ends) and its copy in living-doc-shared/references/living-doc-bdd-schemas.md, then read the header-writing SKILL.md files under agentic/.claude/skills/ (create-user-story, create-feature, create-functionality, update, gherkin-living-doc-sync, pageobject-scan). Done when each skill links the canon block instead of restating it, cross-reference notes go under the header's notes: key, and no skill writes a tab or no-break space into a header, with an eval per item per agentic/docs/testing/eval-protocol.md. The issue's grep re-check should find a tab rule.
Written by the indexing model from the issue text.
Description
Description of Technical Debt
The canon says where each part of a header starts and ends, what makes a header present, and that every line the
reader does not take is reported (docs/reference/authoring-formats.md § Indentation, Where a part starts and
ends). living-doc-utilities reads headers by exactly these rules, and the canon copy in
living-doc-shared/references/living-doc-bdd-schemas.md carries the block. The skills that write or update headers
do not yet follow it:
- Header lines.
living-doc-create-user-story,-create-feature,-create-functionality,living-doc-updateand
gherkin-living-doc-syncfollow the template's levels. Nothing says that a single-value key takes one line, that
every header line carries its marker, that allAC:lines sit at one level, or that the title carries the id. - Cross-reference notes.
living-doc-pageobject-scanandliving-doc-updatewrite nonotes:on a
cross-reference header, which the canon now allows for notes about that page. - Tabs. No skill checks for a tab or a no-break space in a header's indentation. The reader takes a tab as one
space in a header, so#, a tab and two spaces beforestatus: Deprecatedreads as the keystatuswhile an editor
shows wrapped text, and the story silently turnsdeprecated.
Impact of Technical Debt
- A header a skill writes may be read differently from what the author sees.
- A tab in an existing header silently changes an entity.
Category
Code Quality / Refactoring
Priority
Medium - Should be addressed soon
Proposed Solution
- Each header-writing skill links the canon block (never restates it), and its output holds: the title carrying the
id, every header line with its marker, every key at the key level, everyAC:line at one indent, a single-value
key on one line, keys in the template's order withacceptance_criteria:last. living-doc-pageobject-scanandliving-doc-updatewrite a cross-reference page's notes under that header's
notes:, never into the full header's.- No skill writes a tab into a header. A skill reading an existing header reports each tab or no-break space in an
indent (file, line, how the reader takes it) and replaces it only on the user's confirmation.normalize(...).changes
already lists onewhitespacechange per rewritten indent.
An eval for each of the three, by agentic/docs/testing/eval-protocol.md.
Effort Estimate
3-5 days
Dependencies / Related
The "Check authored living-doc input before merge and while typing" issue (running the reader over a draft is out of scope here).
Additional Context
Measured 2026-11-12 at living-doc 2df73dc. Re-check:
grep -n -i "no-break space\|tab" agentic/.claude/skills/*/SKILL.md finds no tab rule while this is open.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 6h 14m
- Merged PRs (30d)
- 27
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AbsaOSS/living-doc
-
type:tech-debt
Difficulty 1/5 Under an hour Newbie friendliness 78/100
AbsaOSS/living-doc#133 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 1/5 1-3 hours Newbie friendliness 85/100
AbsaOSS/living-doc#130 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
AbsaOSS/living-doc#129 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AbsaOSS/living-doc#119 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 5/5 Over a week Newbie friendliness 5/100
AbsaOSS/living-doc#136 ·
Maintainers usually reply within 1 day
All issues in AbsaOSS/living-doc
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
deepchem/deepchem#5289 · 1 comment ·
Maintainers usually reply within 2 days
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 60/100
UKGovernmentBEIS/inspect_evals#2892 · 1 comment ·
Maintainers usually reply within 1 day
-
Versioning docs: say that no output from the 0.46 warning check means nothing is affectedPossibly taken @grelinfo claimed this today. Opendocumentation priority:low size:S
Difficulty 1/5 Under an hour Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
alphacrack/readme2demo#293 ·