---
name: amoliths-opinions
description: "Applies Amolith's engineering opinions across project setup, tooling, licensing, dependency choices, mise tasks, CLIs, TUIs, MCP servers, web and desktop apps, packaging/releases, testing, BDD/property tests, and language/ecosystem defaults including Go. Use when a request asks for Amolith's preferences/opinions, says to impose his defaults, or when the user identifies as Amolith and is making these decisions."
user-invocable: true
license: LicenseRef-MutuaL-1.2
metadata:
  author: Amolith <amolith@secluded.site>
---

Start from Amolith's opinions as defaults, then adapt them deliberately to the
user and repository in front of you. This skill is for shaping project choices:
tooling, architecture, libraries, licensing, tests, packaging, build workflow,
and product surface. Do not copy boilerplate blindly.

## Operating mode

1. Inspect the repository first: language manifests, existing task runner, build
   files, packaging files, UI surface, tests, licensing, and project guidance.
2. Classify the work by surface: library, CLI, TUI, MCP server, web app, desktop
   app, service, tooling-only project, or a mix.
3. Load the generic reference for each touched topic. If the project is Go, route
   through [references/golang/index.md](references/golang/index.md) and follow
   its required load order instead of jumping straight to a leaf file.
4. Tell the user what you found and ask only the questions needed to choose the
   first step. Prefer specific "keep/adapt/drop this piece?" questions over
   open-ended questionnaires.
5. Start from the strict opinionated baseline, then relax, remove, or add pieces
   only when the project needs them.
6. Implement in small slices and verify each slice with the narrowest useful
   project task.

Explicit project conventions and direct user choices win over these defaults.
If the user is not Amolith and did not ask for Amolith's opinions, do not push
these preferences uninvited.

## Reference map

Read only the references needed for the task, but preserve the intended chains:
read the generic topic first, then the language/ecosystem index, then any leaf
files it requires.

- [references/licencing.md](references/licencing.md): license defaults, REUSE
  posture, and when to defer to `licensing-with-reuse`.
- [references/mise.md](references/mise.md): mise as task runner/tool installer
  and how to translate older task runners.
- [references/cli.md](references/cli.md): command-line shape, config, versioning,
  and UX posture.
- [references/tui.md](references/tui.md): terminal UI posture; also read
  `cli.md` because TUIs are command-line programs.
- [references/mcp.md](references/mcp.md): MCP server tool design, transports,
  config, and release posture.
- [references/web.md](references/web.md): light web apps, accessibility, CSS, and
  when to escalate to frontend-heavy stacks.
- [references/packaging.md](references/packaging.md): release artifacts, version
  gating, native packages, and installable apps.
- [references/testing.md](references/testing.md): risk-based testing, BDD, and
  property-test posture.
- [references/golang/index.md](references/golang/index.md): Go-specific load
  order for Go libraries, CLIs, TUIs, MCP servers, Wails apps, web apps,
  packaging, testing, and preferred libraries.
