Add automatic table of contents generation for Obsidian linter
Implement an opt-in rule that generates and updates a TOC from document headings.
obsidian-linter-auto-table-of-contents
Normalized profile
What this task asks for
Implement an opt-in rule that generates and updates a TOC from document headings. Implement a new rule, export default `AutoToc` from `src/rules/auto-toc.ts`, that generates or updates a TOC. Opt-in via `<!-- toc -->`. If absent, return input unchanged. The TOC region uses `<!-- toc -->` and `<!-- /toc -->` (case-insensitive, whitespace-tolerant). Ensure blank lines after the start marker, after an optional `title` line, before the end marker, and after the end marker. Include only ATX headings (`#`), filtered by `minLevel`/`maxLevel`.
Intent
- feature implementation
- configuration tuning
- data transformation
- test and validation
Work surfaces
- database schema
- serialization
- build system
Technology
- Obsidian Linter
- YAML
Expected artifacts
- repository patch
What makes it difficult
- strict behavioral compatibility or exact-output validation
- changes span multiple components or interfaces
Published evidence
Model × harness outcomes
Counts are tied to these exact configurations. Harnesses are not treated as equivalent across benchmarks.
- Models
- 13
- Configurations
- 41
- Trials
- 164
Showing 41 of 41 configurations
| Model | Harness | Effort | Result | Passes |
|---|---|---|---|---|
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | xhigh | Mixed | 1/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| claude-sonnet-4-6anthropic | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| gemini-3-1-pro-previewvertex_ai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gemini-3-5-flashvertex_ai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| gpt-5-4openai | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| kimi-k2-7-codeopenrouter | mini-swe-agentpublished configuration | default | No passes | 0/4 |