At the start of EVERY session, check for agent messages.
- SessionStart hook runs automatically — injects unread messages into system reminders
- If no messages in reminders, manually check:
ailang messages list --unread - When messages exist: Summarize to user, ask what to do
- After handling:
ailang messages ack --all - If task fails:
ailang messages unack MSG_ID(moves back for retry)
Essential message commands:
ailang messages list --unread # Check for new messages
ailang messages read MSG_ID # Read full message
ailang messages ack --all # Mark all as read
ailang messages send INBOX "msg" --title "Title" --from "agent-name"NEVER run these commands — they destroy uncommitted work:
git checkout <branch>when there are uncommitted changesgit pullon a branch with local commits (usegit statusfirst!)git reset --hard,git clean -fdgit stashfollowed by branch switching that causes fast-forward
CORRECT approach:
- ALWAYS
git statusfirst - If uncommitted changes exist, ASK THE USER how to handle them
- Work on CURRENT branch — don't force a branch switch
- NEVER assume it's safe to discard or stash work
The developer uses multiple GitHub accounts. Before ANY release or git push:
gh auth status # Check active account
# This repo needs: sunholo-voight-kampff (Claude Code agent account)
# MarkEdmondson1234 = human developer account
# rw-markedmondson = WRONG (Rockwool project)
gh auth switch --user sunholo-voight-kampff # Switch if neededBefore writing ANY new script or code:
- Check
make helpfor existing targets - Check
tools/directory for existing scripts - Search codebase:
grep -r "function_name" internal/
The ailang CLI exists to make YOUR life easier. Use ailang chains, ailang messages, ailang eval-*, and ailang dashboard instead of raw SQLite queries or ad-hoc scripts.
If the fallback value affects data integrity, business logic, or user decisions → NO FALLBACK. Return zero, null, or error instead.
Apply to: Pricing/costs, model configs, required env vars, data validation. Fallbacks OK for: UI defaults, optional features, caching.
Before fixing a bug, ALWAYS ask: "Is this part of a larger pattern?" Search for similar code paths. Design ONE unified fix instead of patching case-by-case.
AILANG is a deterministic language designed for autonomous AI code synthesis and reasoning.
Priorities: Machine decidability, semantic transparency, compositional determinism. File extension: .ail.
- Explicit Effects — All side effects declared in function signatures
- Everything is an Expression — No statements, only expressions
- Type Safety — Hindley-Milner inference + row polymorphism
- Deterministic — All non-determinism must be explicit
- AI-Friendly — Structured execution traces for training
| Package | Purpose | Use For |
|---|---|---|
internal/ai/ |
Text generation via HTTP APIs | Research, docs, Q&A |
internal/executor/ |
Agentic coding with file editing | Bug fixes, features, refactoring |
- use-ailang — Write correct AILANG code
- skill-builder — Create new skills (meta-skill)
- release-manager / post-release — Release workflow
- sprint-planner / sprint-executor / sprint-evaluator — Sprint workflow (plan, execute, evaluate)
- collaboration-hub — Collaboration Hub UI (React)
- codebase-organizer — Refactor large files
- design-spec-auditor — Verify code matches specs
- github-issue-triage — Triage GitHub issues
- test-coverage-guardian — Analyze test coverage
- perf-reviewer — Performance review and benchmarks
- trace-debugger — Debug via OTEL traces
- builtin-developer — Add builtin functions
- parser-developer — Parser development
- eval-analyzer / benchmark-manager — Eval tools
- coordinator-helper — Manage coordinator tasks
Docs: .claude/skills/README.md
This repo ships a local Claude Code marketplace at .claude-plugin/marketplace.json with:
- ailang-go-lsp — runs
goplsso Claude gets real-time Go diagnostics, go-to-definition, find-references, and hover types instead of grepping the codebase. Requiresgoplson PATH (go install golang.org/x/tools/gopls@latest). - ailang-lsp — runs
ailang lsp --stdioso Claude gets the same capabilities for.ailfiles (diagnostics, hover types with effect rows, go-to-def, references, document symbols). Requires theailangbinary on PATH (make installfrom this repo).
One-time install (per developer):
/plugin marketplace add /Users/mark/dev/sunholo/ailang
/plugin install ailang-go-lsp@ailang-tools
/plugin install ailang-lsp@ailang-tools
Verify with /plugin (both should show under Installed, no entries under Errors). User guide: docs/docs/guides/lsp.md.
Domain-specific rules load automatically when working with matching files:
| Rule File | Loads When Touching |
|---|---|
parser.md |
internal/parser/, internal/lexer/, internal/ast/ |
type-system.md |
internal/types/, internal/elaborate/, internal/iface/, internal/pipeline/ |
coordinator.md |
internal/coordinator/, internal/executor/, internal/server/, ui/ |
eval.md |
internal/eval_harness/, benchmarks/, eval_results/ |
ailang-syntax.md |
examples/*.ail, stdlib/, prompts/ |
coding-standards.md |
Always loaded |
dev-workflow.md |
Always loaded |
- AILANG Syntax:
ailang promptor prompts/ - Limitations: docs/LIMITATIONS.md
- Development Workflow: docs/docs/guides/development-workflow.md
- Coordinator: docs/docs/guides/coordinator.md
- Messaging: docs/docs/guides/agent-messaging.md
- Evaluation: docs/docs/guides/evaluation/
- Telemetry: docs/docs/guides/telemetry.md
- Debugging: docs/docs/guides/debugging.md
- Collaboration Hub: docs/docs/guides/collaboration-hub.md
- Database Architecture: docs/docs/guides/database-architecture.md
- Design Docs: design_docs/
- Examples: examples/