AgentSkillsCN

teach-charter

为您的项目设置 Gotrino 助手。检测您的技术栈,捕捉范围决策,并创建随项目演化的配置。首次运行即可启动,后续可重新审视以更新决策。

SKILL.md
--- frontmatter
name: teach-charter
description: Set up the Gotrino assistant for your project. Detects your stack, captures scope decisions, and creates a config that evolves with your project. Run once to get started, revisit to update decisions.
allowed-tools: Read, Grep, Glob, Write, AskUserQuestion, Bash
user-invocable: true

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:

bash
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

  1. Discovers project context (stack, existing tooling)
  2. Asks about scope and priorities
  3. Creates .assistant-config.md with decisions documented
  4. 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:

markdown
## 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:

markdown
### 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:

markdown
### 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

markdown
### 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:

markdown
# 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 ActiveWhy
Racial slurs/termsCore human dignity
Ableist slursCore human dignity
Dehumanizing languageCore human dignity
Hostile user-facing copyBasic UX principle

Users can deprioritize categories, but can't turn off "don't be harmful."

Output After Setup

markdown
## 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:

  1. Read current config
  2. Show what's there
  3. Ask what they want to update
  4. Preserve decision log history
  5. Add new entry to decision log

Acknowledging Findings Inline

Other skills can add to the config. When a user acknowledges a finding:

markdown
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:

markdown
## 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:

  1. Read .assistant-config.md at start (if exists; follow migration preflight in references/config-migration.md)
  2. Skip checks that are out of scope
  3. Skip acknowledged findings
  4. Note what was skipped and why
  5. Offer to acknowledge new findings

Example output when config exists:

markdown
## 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)
...