> ## Documentation Index
> [HTML page](https://blode.co/taste-lint/docs/skill-packs)
> [Documentation index](https://blode.co/taste-lint/docs/llms.txt)
> Use the index to discover all available pages before exploring further.

# Skill packs

Repository checks, architecture policy, personal-writing context, and source discovery.

The expanded checks share the normal lint pipeline, findings, suppressions, coverage, and reports. All newly ported checks are review-only. A pattern match that needs interpretation schedules a Jev question. It is not itself a defect.

## Repository and document analysis

The scanner accepts Markdown/MDX, TS/TSX, JS/JSX, MJS/CJS, MTS/CTS, CSS/SCSS, JSON, and YAML. Plain TS/JS/config inputs contribute structural source units, not arbitrary prose strings. Parsed imports distinguish actual imports from code in comments or string examples.

README.md, SKILL.md, AGENTS.md/CLAUDE.md, and docs/plans Markdown get document profiles automatically. Profile overrides in `taste-lint.config.json` take precedence. `personal`, `pr`, and `slides` require explicit configuration. Declaring a profile does not imply every check for that artifact is implemented.

```json
{
  "docTypes": [{ "glob": "drafts/**/*.md", "type": "personal" }]
}
```

Personal-writing rules include rhetorical patterns and comparisons against explicitly supplied facts, voice guidance, and drafting instructions. Pass `--writing-context context.json` with any of `facts`, `profile`, and `instructions` as nonempty strings. Missing or oversized comparison context produces unknowns. No private Ghostwriter profile is loaded automatically. These checks do not establish that text was generated by AI.

```json
{
  "facts": "The deadline is Friday.",
  "profile": "Warm and direct.",
  "instructions": "Ask for feedback."
}
```

Context applies only to `personal` documents. Live lint sends requested context to the configured provider. `--dry-run` makes no requests. Explicitly printing request state can reveal supplied context.

Repository facts use the nearest package manifest and resolve local file references inside the scan root. They do not execute documented commands, generated scripts, or skill instructions. Unbuilt output and unresolvable aliases produce unknowns when they prevent a decision. JSONC configurations currently need a parser adapter and are unknown to JSON configuration rules.

## Declared architecture

Only explicit policy enables the module-boundary, deprecation, and generated-header checks:

```json
{
  "architecture": {
    "boundaries": [
      {
        "from": "src/data/**",
        "disallow": "src/http/**",
        "reason": "Data code must not import transport handlers"
      }
    ],
    "deprecatedImports": {
      "old-sdk": "new-sdk"
    },
    "generated": ["src/generated/**"]
  }
}
```

Boundary patterns match literal import specifiers and normalised repository-relative targets for relative imports. They do not resolve arbitrary TypeScript aliases. Match an alias explicitly, such as `@http/**`, or use a graph tool for resolved dependency policies. These checks do not prove acyclicity, architectural quality, or distributed correctness.

## Discover source skills

Inventory every source collection without generating or activating rules:

```sh
taste-lint rules discover ../agent-skills ../ghostwriter /Users/mblode/.agents/skills/copywriting
```

The command includes entrypoints, `rules/`, `rules-arch/`, `rules-ax/`, references, and guidelines. It omits evaluations, scripts, launcher metadata, dependencies, and symlinks. The output includes section locations and existing source-path citations. A citation is provenance, not proof that every standard in that source is implemented. An uncited source remains `needs-triage`.

The existing `port-rules --write` remains a limited three-collection generator. Discovery stays separate so newly found standards do not become active TODO questions.

## Verification

Offline regression tests cover positive and negative examples, routing, scope, unknowns, path containment, import parsing, configuration, and report integration. Mocked Jev results verify the contract, not semantic accuracy. Promotion still needs labelled evaluation.

Browser flows, calibrated voice fidelity, distributed operations, complete import graphs, and external site state need extra evidence adapters. An absence-of-keyword check is not a substitute for those.