feat: area pages — figures, menu-path file names, reader-first tables (v0.16.0) - #10
Merged
Merged
Conversation
- templates/area.md gains an optional Numbers (통계 산정) section between Business rules and How it works: one line per on-screen count, rate, score or chart figure, numbered N1... with the same permanence rules as a business rule (P-number) - Extended only where omitting N-numbers would leave figures unprotected: templates/spec.md's Business rules touched section, ship's retrospective area-candidate instruction, templates/harvest.md's Area candidates format, and AGENTS.md rule 4's knowledge-filing table - README.md / README.ko.md: one mention each in the product-area paragraph and the memory-tree comment - kb.sh untouched: the Rules count stays P-only, no correctness gap 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- File name = menu path: the Menu line with each " > " written " - " and any of / \ : * ? " < > | replaced with "-" (교사 > 학생 > 학급 분석 → memory/areas/교사 - 학생 - 학급 분석.md). The ASCII kebab-case instruction is gone; AGENTS.md rule 4 and ship's retrospective tell the close merge the rule when it creates a page - tools/kb.sh finds a page by file name, by Menu, or by the file name a Menu gives (kb_area_file); still refuses /, \ and a leading . as a file lookup; contents-page links percent-encode space % ( ) [ ] # < > (kb_area_href) so they open in GitHub and Obsidian; <summary> becomes a section label so show prints the plain part first, evidence last; an unfilled "- P1: <...>" template line is not counted or printed - templates/area.md is reader first: plain rules, numbers, how it works and history on top; Where and one "P1 — source · set by · [verified]" evidence line per rule/figure inside a <details> block at the bottom; a retired rule's reason lives on its evidence line. Headings unchanged - harvest.md, ship SKILL, AGENTS.md table: sources go to the evidence line - selftest covers a Hangul menu-named page with spaces (lookup by Menu and file name, percent-encoded link, rule count ignores evidence/retired lines, path lookup refused) - changelog v0.16.0 extended with a compatibility note: ASCII-named pages keep working; how to rename 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Obsidian does not render markdown inside HTML blocks, so a <details> evidence block collapses into one raw paragraph there. A store with index_style: obsidian writes it as a folded callout instead: > [!info]- 근거 · 코드 위치 (개발자용) - templates/area.md: <details> stays the default; one comment names the callout form for an Obsidian store - tools/kb.sh: kb_field/kb_get drop a leading "> " so Where is found in a callout; kb_body treats a "> [!type]- X" line as the "X:" label and prints the callout's lines without "> "; kb_area_rules still counts only column-0 "- P<n>:" lines - AGENTS.md, skills/5-ship, templates/harvest.md: "or the folded callout in an Obsidian store (index_style: obsidian)" - selftest: a callout-form page (Where read by kb_get, rule count 1 with a "> - P2:" line inside, evidence printed last without the prefix) - changelog v0.16.0: one entry 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…(v0.16.0) - templates/area.md: Business rules | # | Rule |, Numbers | # | Label on screen | What is counted | Out of | Timing |, History | Date | Feature | What changed for the user |, and in the evidence block (<details> or the Obsidian callout) the - Where: line plus | # | Source | Set by | Verified |. Menu, Aliases and How it works stay list lines; a retired rule is | ~~P3~~ | ~~rule~~ | with the reason in its evidence row's Source cell; header words are free, a literal | in a cell is \| - tools/kb.sh keys on row shapes only: kb_area_rules counts | P<n> | rows and old - P<n>: lines above the evidence block (stops at <details> or > [!...]); kb_area_last reads History's first | YYYY-MM-DD | row or the old list line; kb_body prints tables as written (callout rows without "> "), dropping only template placeholder rows and the header of a table left with no rows - AGENTS.md rule 4, skills/5-ship, templates/harvest.md: the close merge writes rows (rule/figure/history and its evidence row); harvest candidates stay line-shaped - README.md / README.ko.md: one mention each - selftest: table-form pages in <details> and callout form with Korean headers (evidence, retired and placeholder rows not counted, last change from the History table, show prints tables with evidence last); the list-form page still counts - changelog v0.16.0: tables entry + list-form compatibility note 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Four changes to product-area pages (
memory/areas/), one unreleased version (v0.16.0):Figures (통계 산정).
templates/area.mdgains an optional Numbers section: one line per on-screen count, rate, score or chart figure, numbered N1… with the same permanence rules as a business rule — what it counts, out of what, real-time or batch.templates/spec.md"Business rules touched", ship's retrospective,templates/harvest.md, and AGENTS.md rule 4 treat a figure like a rule.File name = menu path. The file name is the Menu line with each
>written-, and any of/ \ : * ? " < > |replaced with-: Menu교사 > 학생 > 학급 분석→memory/areas/교사 - 학생 - 학급 분석.md. The ASCII kebab-case instruction is removed everywhere; AGENTS.md rule 4 and ship tell the close merge the rule when it creates a page.tools/kb.shfinds a page by file name, by Menu, or by the file name a Menu gives; it still refuses/,\and a leading.as a file lookup; contents-page links percent-encode space%()[]#<>so they open in GitHub and Obsidian.Reader-first layout. Plain language on top for a non-developer (Menu, Aliases, Business rules, Numbers, How it works, History — no source, no code); every source, verification and code location in a
<details>block "근거 · 코드 위치 (개발자용)" at the bottom: the Where line and one- P1 — source · set by · [verified]evidence line per rule or figure. Evidence lines have no colon after the number, so the Rules count ignores them; a retired rule's reason lives on its evidence line. Section headings unchanged.kb.sh showprints the plain part first and labels the evidence block last. Harvest candidates, ship's retrospective and AGENTS.md now send sources to the evidence line. In a store withindex_style: obsidianthe evidence block is written as a folded callout instead (> [!info]- 근거 · 코드 위치 (개발자용), every line prefixed>), since Obsidian does not render markdown inside<details>;kb.shreads both forms (Where found, callout printed last without>, never counted as rules).Tables at a glance. Rules (
| P1 | rule |), figures (| N1 | label | counted | out of | timing |), history (| date | feature | what changed |) and evidence (| P1 | source | set by | verified |, under the- Where:line) are markdown table rows; Menu, Aliases and How it works stay list lines. A retired rule is| ~~P3~~ | ~~rule~~ |with its reason in the evidence row's Source cell. Header words are free (| # | 정책 |works) —kb.shkeys on row shapes only: the Rules count reads| P<n> |rows above the evidence block, the last change reads History's first| YYYY-MM-DD |row, andshowprints tables as written (callout rows without>), dropping only template placeholder rows. The close merge writes rows; harvest candidates stay line-shaped.Compatibility
Existing ASCII-named pages keep working — lookup by Menu, index listing and feature filing are unchanged; only new pages take the menu-path name. To rename:
git mvthe page to the name its Menu gives, thentools/kb.sh index(seelog/changelog-v0.16.0.md). List-form pages (- P<n>:rules,- YYYY-MM-DDhistory lines) are still counted and dated, and a page may mix both forms. Old-style inline sources on a rule still count and print. Gates, approvals and the--jsonschema are unchanged.Test plan
bash gates/selftest.sh→SELFTEST PASS. The "knowledge by product area" test now covers a Hangul menu-named page with spaces, laid out reader first with evidence lines and a retired rule: percent-encoded index link with Rules = 2,showby Menu and by file name prints rules before evidence, a path lookup is refused. A second page in the Obsidian callout form: Where read bykb_get, Rules = 1 even with a P2 evidence row inside, evidence printed last without the>prefix. Both pages are in table form with Korean header words (evidence, retired and placeholder rows not counted; last change from the History table); the list-formrosterpage still counts.tools/kb.sh, the extended selftest fails (the test detects the change).🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com