agentsclimarketplace

Stack profile

Skill bRRRITSCOLD/compainy/skills/stack-profile

Defines the optional per-project technology stack profile that overrides the implementation skills' built-in default stack. Invoked when the user says "set the stack", "init stack", "what stack", "use a different stack", "stack profile", "configure the project stack", "we use Python/Django/Vue/etc", or runs "/init-stack" — and read by the implementation skills (react-component-library, backend-service-patterns, pages-templates, cloud-infra, data-modeling) before they build, so a project on a non-default stack adapts instead of forcing the defaults.From its SKILL.md

Install
npx -y skills add bRRRITSCOLD/compainy --skill stack-profile

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, as published. Nobody here has run it

Stack Profile Skill

This plugin is opinionated by default: its implementation skills ship concrete, battle-tested code for a specific stack. That concreteness is the value — it's what makes the agents produce deep output fast, not generic scaffolding.

But the stack is a default, not a cage. A project can declare its own stack in a profile file; the implementation skills read it and adapt. Two layers, treated differently:

  • Discipline is invariant. TDD (red/green/refactor, the unit/integration/e2e tiers, Subject_Scenario_Expectation naming), DDD (strategic boundaries, aggregates when earned), pragmatic SOLID (DI + interfaces, no ceremony), DRY/KISS/YAGNI, ports-and-adapters, architecture/ADR rigor — these do not change with the stack. The discipline skills never read the profile.
  • Stack is a parameter. Languages, frameworks, component library, data stores, infra target, test runner — these are what the profile sets, and what the implementation skills swap.

Where the profile lives

.ai/stack-profile.md at the project root. When present, it overrides the built-in default stack named in any implementation skill. When absent, the defaults apply unchanged — zero friction on a default-stack project.

How implementation skills use it

Before building, an implementation skill (or the engineer agent running it) must:

  1. Read .ai/stack-profile.md if it exists.
  2. If it matches the skill's built-in default (or is absent) → use the skill's concrete examples directly.
  3. If it diverges (names a framework/language/store the skill doesn't default to) → treat the skill's code examples as patterns to translate, not literal output. Research the chosen technology's current idioms (official docs via WebFetch, existing project code via Grep/Glob) before writing, then build to the same discipline. Never paste a default-stack example into a project that declared a different stack.
  4. Apply the discipline regardless — the profile changes what you build with, never how rigorously.

Built-in defaults (and what stays invariant)

So divergence is detectable, these are the skills' defaults. Rows marked invariant are discipline, not stack — the profile does not override them:

DimensionDefaultOwning skill
Frontend frameworkTanStack Start + TanStack Routerpages-templates
Component primitivesshadcn/ui pattern on Base UI (@base-ui-components/react)react-component-library
StylingTailwind + cva + cn()react-component-library
Forms / validationTanStack Form + zod@^4pages-templates
URL/query statenuqspages-templates
Backend language(s)Go / Node / Rustbackend-service-patterns
HTTP frameworkGin (Go) / Fastify (Node) / Axum (Rust)backend-service-patterns
Backend validationgo-playground/validator / zod / validator cratebackend-service-patterns
Service architectureports-and-adapters (invariant — not overridable)backend-service-patterns
Data storeschosen per workload (already profile-driven)data-modeling
Infra targetAWS / Cloudflare / Hetznercloud-infra
IaCIaC-first, provider-appropriatecloud-infra
Test tiersunit / integration / e2e (invariant); runner per languageprinciples-tdd

Profile format

/init-stack writes this; edit it by hand anytime. Keep only the lines that differ from the defaults — anything omitted, left blank, or still at its placeholder is treated as the default. Architecture (ports-and-adapters) and the test tiers are not fields here: they are invariant, so they appear only as reminders, never as editable values.

# Project Stack Profile
<!-- Read by the `compainy` plugin implementation skills; overrides their defaults.
     Discipline (TDD/DDD/pragmatic-SOLID/DRY-KISS, ports-and-adapters,
     test tiers, Subject_Scenario_Expectation naming) is invariant. -->

## Languages
- e.g. TypeScript, Go

## Frontend
- Framework:           # e.g. TanStack Start | Next.js | Remix | SvelteKit | none
- Component primitives:# e.g. Base UI | Radix | Ark | native | <none>
- Styling:             # e.g. Tailwind+cva | CSS Modules | vanilla-extract
- Forms / validation:  # e.g. TanStack Form + zod | react-hook-form + zod
- URL / query state:   # e.g. nuqs | search params | none

## Backend
- Language(s):         # e.g. Go | Node | Rust | Python
- HTTP framework:      # e.g. Gin | Fastify | Axum | FastAPI | Django
- Validation:          # e.g. go-playground/validator | zod | pydantic
# Architecture is invariant: ports-and-adapters / DI (not a stack parameter)

## Data
- Primary store(s):    # e.g. Postgres, MongoDB
- Cache:               # e.g. Redis | none
- Search / vector:     # e.g. pgvector | OpenSearch | none

## Infra
- Target:              # e.g. AWS | Cloudflare | Hetzner | self-host | local-only
- IaC:                 # e.g. Terraform | Pulumi | SST | none
- Local infra:         # e.g. docker-compose (mongodb, postgres, redis, rabbitmq)

## Testing
- Runner(s):           # e.g. vitest (TS), go test (Go)
- E2E:                 # e.g. Playwright | none
# Test tiers are invariant: unit / integration / e2e (not a stack parameter)

## Notes / constraints
- # anything an agent must know: monorepo layout, banned deps, version pins, etc.

Seeding the profile

  • /init-stack runs an interview and writes .ai/stack-profile.md.
  • In feature-delivery, the main session should seed or confirm the profile before the build phase so every dispatched specialist reads the same stack. A profile that matches the defaults is fine to leave implicit; write one only when the project diverges or when you want it explicit for other contributors.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.