/auto-tag

SkillDocs & knowledge

Batch auto-tag untagged notes using content analysis

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /auto-tag skill

What this skill tells your AI

The instructions your AI receives, as published by davidroliverba/architectkb in .claude/skills/auto-tag/SKILL.md and read by ahel’s review.

Batch auto-tag notes that have empty or missing tags by analysing their content and type. Addresses the 61% empty tag rate in the vault.

Usage

/auto-tag                    # Process all untagged notes
/auto-tag <path>             # Process specific file or folder
/auto-tag --dry-run          # Preview changes without applying
/auto-tag --type Meeting     # Only process untagged notes of a specific type
/auto-tag --limit 50         # Process at most 50 notes

Instructions

Phase 1: Find Untagged Notes

Use Grep and Glob to find notes with empty tags:

# Find files with empty tags arrays
Grep for "tags: \[\]" in *.md files (exclude Templates/, .obsidian/, .claude/, Archive/)

# Also find files with no tags field at all
# Notes with tags containing only template variables

Filter results:

  • Exclude Templates/, .obsidian/, .claude/, Archive/, Attachments/
  • If --type specified, filter by frontmatter type field
  • If <path> specified, scope to that path
  • Sort by type for batch efficiency

Phase 2: Analyse and Tag (Parallel)

Launch parallel Haiku sub-agents, batching 20 notes per agent:

For each note, the agent should:

  1. Read frontmatter — extract type, title, project, status
  2. Read body content — first 500 words
  3. Determine tags using these rules:
Tag Selection Rules

By note type (always apply):

TypeAuto-tags
ADRtype/adr, activity/architecture
Meeting(infer from title/content)
Task(infer project from project: field)
Projectactivity/delivery + self-referencing project/ tag
Systemtype/system
Incubatoractivity/research
Researchactivity/research
Concept(infer from content)
Pattern(infer from content)
Email(infer from content)
Reference(infer from referenceType and content)
Trip(no tags needed — skip)
Dailydaily

By content analysis (keyword matching):

Content KeywordsSuggested Tag
AWS, Lambda, S3, EC2, Bedrocktechnology/aws
SAP, BTP, S/4HANA, UI5technology/sap
ERPSystem, MRO Vendortechnology/erp
Kafka, streaming, eventtechnology/kafka
Snowflake, data warehousetechnology/snowflake
security, IAM, encryptiondomain/security
data, analytics, pipelinedomain/data
engineering, maintenance, MROdomain/engineering
integration, API, middlewaredomain/integration
cloud, infrastructuredomain/cloud
architecture, design, patternactivity/architecture
research, investigation, POCactivity/research
governance, compliance, policyactivity/governance

By project: field (if present):

Project LinkTag
[[Project - Alpha]]project/alpha
[[Project - Beta]] or [[Project - Beta]]project/beta
[[Project - AlertHub]]project/alerthub
[[Project - Gamma]]project/gamma
[[Project - Delta]]project/delta
[[Project - Epsilon]]project/epsilon
[[Project - Cyber Uplift]]project/cyber-uplift

Tag count target: 2-5 tags per note. Prefer fewer, more accurate tags over many vague ones.

  1. Format tags — all lowercase, hierarchical, no # prefix
  2. Return — list of (filepath, suggested_tags) tuples

Phase 3: Apply Tags

For each note with suggested tags:

  1. Read current frontmatter
  2. If tags: [] — replace with suggested tags
  3. If no tags field — add tags: with suggested tags
  4. Write updated file using Edit tool

Format:

# Inline for 1-3 tags:
tags: [activity/research, domain/data]

# Multi-line for 4+ tags:
tags:
  - activity/architecture
  - technology/aws
  - domain/cloud
  - project/alerthub

Phase 4: Report

## Auto-Tag Results

**Notes processed:** {{count}}
**Notes tagged:** {{tagged_count}}
**Notes skipped:** {{skipped_count}} (already tagged or no suggestions)

### By Type
| Type | Tagged | Example Tags |
|------|--------|-------------|
| Meeting | 45 | project/*, domain/* |
| Concept | 30 | activity/*, domain/* |
| ADR | 20 | type/adr, technology/* |

### Sample Changes
| Note | Tags Added |
|------|-----------|
| {{note}} | {{tags}} |
| {{note}} | {{tags}} |

Safety

  • Always use --dry-run first for vault-wide operations
  • Never overwrite existing non-empty tags
  • Commit to git before running
  • Tags are additive only — never removes existing tags
  • Use the .claude/context/tag-taxonomy.md reference for valid hierarchies

Related Skills

  • /tag-management — Manual tag analysis and refactoring
  • /quality-report — Includes tag coverage metrics
  • /vault-maintenance — Includes tag health checks

Signals

GitHub stars
52
Forks
12
Last commit
Mar 2026
Advanced
Catalog kind
skill
Gateway key
auto-tag
Source
github.com/davidroliverba/architectkb