Teach Charter (Setup & Configuration)
Help users set up the Gotrino assistant for their project, capturing context and scope decisions that reduce noise over time.
Migration preflight
Before anything else, check for the legacy config. If .inclusion-config.md exists in the project root and .assistant-config.md does not, rename it silently:
mv .inclusion-config.md .assistant-config.md
Note the migration in the output: Migrated: .inclusion-config.md → .assistant-config.md.
If both files exist, keep .assistant-config.md and leave the legacy file — the user will resolve.
See references/config-migration.md for the full migration contract.
Philosophy
This plugin should be a conversation, not a lecture.
Users make conscious decisions about scope. If they've decided "we're US-only," we shouldn't nag them about i18n every time. But we should:
- •Record the decision with rationale
- •Make it easy to revisit later
- •Never let core dignity principles be disabled
What This Skill Does
- •Discovers project context (stack, existing tooling)
- •Asks about scope and priorities
- •Creates
.assistant-config.mdwith decisions documented - •Enables future checks to respect those decisions
Process
1. Detect Project Context
Scan for:
- •
package.json,requirements.txt,Gemfile, etc. → Stack - •
react-intl,i18next,gettext→ i18n setup - •
eslint-plugin-jsx-a11y,axe-core→ a11y tooling - •Test directories → Where fixtures live
- •Docs directories → Where documentation lives
- •
decisions/,docs/decisions/,docs/adr/→ Where decision records live
2. Present Findings for Correction
Show what was detected and let user correct:
## Project Analysis ### Detected (correct if wrong) | Setting | Detected | Correct? | |---------|----------|----------| | Framework | React 18 | | | i18n setup | None detected | | | a11y tooling | eslint-plugin-jsx-a11y | | | Test location | src/__tests__/ | | | Docs location | docs/ | | | Decisions location | decisions/ | | | Task management | None detected | |
2b. Capture Task Management
Ask where and how tasks are tracked:
### Task Management **Where do you track tasks?** - [ ] Linear - [ ] GitHub Issues - [ ] Jira - [ ] Local files (e.g. `tasks/`, `TODO.md`) - [ ] Other: ___ - [ ] None / ad hoc **Is the tracker accessible to Claude via tools?** - [ ] Yes (e.g. Linear MCP, GitHub CLI) - [ ] No — read-only / manual - [ ] Not sure **Where should code-adjacent tasks go?** (Quick tasks for the current session, not full issues) - [ ] Local task files in: ___ - [ ] Just mention them in conversation - [ ] Same tracker as above
3. Capture Scope Decisions
Ask about intentional scope limitations:
### Scope Questions **Target audience:** - [ ] Global (all regions, languages) - [ ] Primarily US - [ ] Primarily EU - [ ] Specific regions: ___ **Is i18n in scope?** - [ ] Yes, we need international support - [ ] No, US-only for now (suppress i18n warnings) - [ ] Later - remind us in ___ months **Is RTL support in scope?** - [ ] Yes - [ ] No (suppress RTL warnings) - [ ] Later **Accessibility standard:** - [ ] WCAG 2.1 AA - [ ] WCAG 2.1 AAA - [ ] No specific standard - [ ] Not prioritized right now (suppress some a11y warnings)
4. Capture Priorities
### What matters most right now? Rank 1-5 (1 = highest priority), or leave blank to skip: | Area | Priority | |------|----------| | Inclusive language in code/docs | ___ | | Diverse names in examples | ___ | | i18n readiness | ___ | | Form inclusivity (gender, address, etc.) | ___ | | Cultural assumptions in examples | ___ |
5. Generate Config File
Create .assistant-config.md in project root:
# Gotrino Assistant Configuration Generated by `/teach-charter` on [date] Last updated: [date] --- ## Project Context | Setting | Value | |---------|-------| | Framework | React 18 | | i18n setup | None | | a11y tooling | eslint-plugin-jsx-a11y | | Test location | src/__tests__/ | | Docs location | docs/ | | Decisions location | decisions/ | | Task management | Linear (accessible via MCP) | | Local task location | tasks/todo/ | --- ## Stack Detected on setup. Drives language-specific checks in the debt skills. | Setting | Value | |---------|-------| | Languages | TypeScript, JavaScript | | Frameworks | React 18 | | Test runner | Vitest | | Package manager | npm | | Manifest files | package.json | --- ## Task Management | Setting | Value | |---------|-------| | Tracker | Linear | | Accessible via tools | Yes (Linear MCP) | | Local tasks | tasks/todo/ | When triaging work, create issues in the tracker if it's accessible. Otherwise, report the recommendation and let the user create the issue manually. Code-adjacent tasks go to the local task location. --- ## Scope Decisions Conscious decisions about what's in/out of scope. The plugin respects these. | Area | Status | Rationale | Decided By | Date | |------|--------|-----------|------------|------| | i18n | Out of scope | US-only product for now | @user | 2024-01-15 | | RTL | Out of scope | No RTL markets planned | @user | 2024-01-15 | | WCAG compliance | In scope (AA) | Accessibility is priority | @user | 2024-01-15 | --- ## Priorities | Area | Priority | Notes | |------|----------|-------| | Inclusive language | 1 | Highest priority | | Form inclusivity | 2 | | | Diverse examples | 3 | | | i18n | — | Out of scope | --- ## Debt Scope Which debt dimensions are relevant, which are out of scope, and any heuristic overrides. | Dimension | Status | Notes | |-----------|--------|-------| | code-debt | In scope | | | doc-debt | In scope | | | test-debt | In scope | | | dep-debt | In scope | | | design-debt | In scope | | ### Heuristic overrides (optional) | Key | Value | |-----|-------| | code-debt.max-function-lines | 50 | | code-debt.max-file-lines | 300 | | code-debt.max-nesting | 4 | --- ## Architecture Principles Optional. If declared, `design-debt` uses these as ground truth for drift detection. <Free-text description of intended architecture — layer boundaries, module responsibilities, import rules.> --- ## Active Checks Based on scope decisions: - [x] language-check - [x] names-check - [x] examples-audit - [ ] i18n-check (disabled: US-only) - [x] inclusion-audit (will skip i18n section) --- ## Acknowledged Findings Specific findings that have been reviewed and acknowledged. These won't be flagged again. | Finding | Location | Rationale | Date | |---------|----------|-----------|------| | US address format | registration.tsx:52 | Intentional, US-only | 2024-01-15 | --- ## Decision Log ### 2024-01-15: Initial Setup Project configured as US-only SaaS. i18n out of scope for now. Will revisit when international expansion planned. — @user --- ## Review Schedule - [ ] Review scope decisions: 2024-07-15 (6 months)
What Can't Be Disabled
These core checks always run regardless of config:
| Always Active | Why |
|---|---|
| Racial slurs/terms | Core human dignity |
| Ableist slurs | Core human dignity |
| Dehumanizing language | Core human dignity |
| Hostile user-facing copy | Basic UX principle |
Users can deprioritize categories, but can't turn off "don't be harmful."
Output After Setup
## Setup Complete Config saved to `.assistant-config.md` ### Your Configuration - **Scope:** US-only (i18n checks disabled) - **Priority:** Inclusive language, then form inclusivity - **Active checks:** language, names, examples, forms - **Disabled:** i18n, RTL ### Recommended First Steps Based on your priorities: 1. `/gotrino-assistant:language-check src/` 2. `/gotrino-assistant:names-check src/__tests__/` 3. `/gotrino-assistant:inclusion-audit src/components/forms/` ### Revisit In Your scope decisions will be reviewed in 6 months (2024-07-15). Run `/gotrino-assistant:teach-charter` again to update anytime.
Updating Existing Config
If .assistant-config.md already exists:
- •Read current config
- •Show what's there
- •Ask what they want to update
- •Preserve decision log history
- •Add new entry to decision log
Acknowledging Findings Inline
Other skills can add to the config. When a user acknowledges a finding:
Found: US-only address format in registration.tsx:52 [ ] Fix this [x] Acknowledge - intentional (won't flag again) [ ] Snooze - revisit in 3 months
The skill adds to .assistant-config.md:
## Acknowledged Findings | Finding | Location | Rationale | Date | |---------|----------|-----------|------| | US address format | registration.tsx:52 | Intentional, US-only | 2024-01-15 |
Integration With Other Skills
Other skills should:
- •Read
.assistant-config.mdat start (if exists; follow migration preflight inreferences/config-migration.md) - •Skip checks that are out of scope
- •Skip acknowledged findings
- •Note what was skipped and why
- •Offer to acknowledge new findings
Example output when config exists:
## Language Analysis: src/ **Config loaded:** .assistant-config.md **Skipped:** i18n checks (out of scope per config) **Acknowledged:** 1 finding already reviewed ### Findings (3 new issues) ...