Skip to content

feat: MVP v0.1 — aisona.yml format + CLI#1

Open
ithiria894 wants to merge 4 commits intomainfrom
feat/mvp-v0.1
Open

feat: MVP v0.1 — aisona.yml format + CLI#1
ithiria894 wants to merge 4 commits intomainfrom
feat/mvp-v0.1

Conversation

@ithiria894
Copy link
Copy Markdown
Contributor

Summary

  • aisona init — detect existing AI configs (Claude/Cursor/Gemini/Copilot/Windsurf), import CLAUDE.md, generate aisona.yml via interactive wizard
  • aisona export --to <tool> / --all — export aisona.yml to 4 tool formats (CLAUDE.md, .cursorrules, GEMINI.md, copilot-instructions.md)
  • aisona status — show persona summary, enabled tools, detected configs
  • aisona watch --git — chokidar file watcher with 2s debounce, auto re-export + optional git commit/push

Architecture

  • aisona.yml = single source of truth for AI persona (identity, personality, rules, preferences, memories)
  • Handlebars templates for each tool (~30 lines each) — easy to add new tools
  • CLAUDE.md parser with heuristic section detection
  • Tool detection for 6 AI coding tools
  • Git auto-sync via simple-git

Test plan

  • aisona --help shows all commands
  • aisona export --all generates 4 config files from test aisona.yml
  • Generated CLAUDE.md has correct sections (Language, Tone, Rules, Preferences, Context, Claude-Specific)
  • Generated .cursorrules has Cursor-appropriate format
  • aisona status shows persona summary and tool detection
  • aisona init interactive wizard (manual test needed)
  • aisona watch --git file watcher + git sync (manual test needed)

🤖 Generated with Claude Code

ithiria894 and others added 4 commits March 27, 2026 18:34
Working CLI with 4 commands:
- `aisona init` — detect existing AI configs, import CLAUDE.md, generate aisona.yml
- `aisona export --to <tool>` / `--all` — export aisona.yml to Claude/Cursor/Gemini/Copilot
- `aisona status` — show persona summary and tool detection
- `aisona watch --git` — file watcher with auto re-export and optional git sync

Includes:
- CLAUDE.md parser (heuristic section detection)
- 4 Handlebars export templates (claude, cursor, gemini, copilot)
- Tool detection for 6 AI coding tools
- Debounced file watcher (chokidar)
- Git auto-commit+push on change (simple-git)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- config.test.js: roundtrip save/load, default structure, findAisonaFile
- parser.test.js: CLAUDE.md parsing (rules, tone, teaching, autonomy),
  .cursorrules parsing, tool detection, real-world CLAUDE.md structure
- exporter.test.js: all 4 tool exports, disabled tool handling, output quality

Also fixes:
- Parser: reorder section matching (teaching/personality before preferences)
  to fix false matches on "tone and style", "teaching style" sections
- Exporter: check tool enabled BEFORE loading template

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e extraction

- Rewrite section classifier with explicit category mapping (ordered by specificity)
- Parse H3 headers as section boundaries (not just H2)
- Extract autonomy prose rules: lines starting with Always/Never/Only → rules array
- Filter standalone bold headers from bullets
- Support numbered lists (1. 2. 3.) as extractable items
- Fix duplicate preferences push in prefs section

Dogfood test results improved:
  Before: 2 rules, 16 preferences, 0 memories
  After:  4 rules, 30 preferences, 1 memory

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Major direction change based on user feedback:
- Not building "AI's soul/personality" (too philosophical, wastes tokens)
- Building "pack your AI habits and take them anywhere" (practical)

Schema changes:
- personality.{tone,style,teaching,autonomy} → preferences.{tone,habits,teaching,autonomy}
- personality.style[] → preferences.habits[] (clearer naming)
- tools.*.extra_rules[] → tools.*.extra[] (simpler)
- Removed verbose personality fields (worldview, contradictions, vocabulary)
- Added practical fields focus (habits, rules, memories)

Updated: SPEC.md, all 4 templates, config.js, parser.js, init.js, all tests
29/29 tests passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant