Ensures tech-stack-aware behavior during workflows. Auto-activates when stack profile rules exist in .claude/rules/stack-*.md. Activates during /arch:init, /context:load, /context:refresh, /deliver, /discern, /diagnose, and /handoff.
From genienpx claudepluginhub elmmly/genie-team --plugin genieThis skill is limited to using the following tools:
Automates post-deployment web UI QA: smoke tests, interactions, visual regression at breakpoints, accessibility audits using Playwright/Puppeteer.
Guides using Bun as runtime, package manager, bundler, and test runner for JS/TS projects with Node comparisons, migration steps, and Vercel deployment.
Builds reusable voice profile from source posts, essays, docs for consistent style in content, outreach, social posts without AI tropes.
Tech stack knowledge lives in Stack Profiles — language-specific quality rules generated by /arch:init:
SPEC (WHAT) BRAND (HOW IT LOOKS)
/ \ /
/ \ /
ADR (HOW+WHY) -- C4 (CONTEXT MAP) -- STACK (HOW TO CODE)
Stack profiles are persistent, project-scoped artifacts generated once and loaded every session.
.claude/rules/stack-{language}.md # Language-specific rules (loaded every session)
CLAUDE.md ## Tech Stack # Compact reference (highest-impact lever)
.claude/settings.json # Verification command permissions
stacks/ # Shipped with genie-team
typescript.md # TypeScript profile template
go.md # Go profile template
rust.md # Rust profile template
csharp.md # C# / .NET profile template
java.md # Java profile template
elixir.md # Elixir profile template
This skill activates during:
/arch:init — Detect tech stack and generate project-specific configuration/context:load — Report active stack profiles and verification status/context:refresh — Detect stack profile staleness/deliver — Inject stack rules and verification reminders into crafter context/discern — Add Stack Compliance to critic review checklist/diagnose — Check for stack profile staleness, missing verification tools/handoff — Include stack context in transition notesAll commands that reference stack profiles follow this pattern:
.claude/rules/stack-*.md for active stack profiles## Version: lineKey principle: Stack is opt-in, like brand-awareness. Not every project needs language-specific rules (e.g., genie-team itself is a prompt engineering project with no application code).
Greenfield projects: When no code exists yet, stack configuration can be set two ways:
/arch:init --stack elixir (team knows the stack)/arch --workshop Phase 2 surfaces "Which tech stack?" when no indicators or profiles exist, then routes to /arch:init --stack {lang}Detects tech stack and generates configuration after C4 diagrams:
--stack [language] flag is provided: Use the specified stack(s) — skip indicator scanning. Validate against available templates in stacks/. If no version source exists (greenfield), prompt user for version.--stack flag: Scan project root for stack indicator files:
tsconfig.json → TypeScriptgo.mod → GoCargo.toml → Rust*.csproj / *.sln → C# / .NETpom.xml / build.gradle → Javamix.exs → Elixirstacks/{language}.md.claude/rules/stack-{language}.md with version substituted## Tech Stack section.claude/settings.json--stack flag AND no stack indicators found: prompt user with available stacks from stacks/*.md via AskUserQuestion (skip option available)Reads: Stack indicator files, stacks/*.md templates
Writes: .claude/rules/stack-{language}.md, CLAUDE.md, .claude/settings.json
Reports active stack profiles:
.claude/rules/stack-*.md**Stack:** {Language} {Version}
- Rules: .claude/rules/stack-{language}.md
- Verification: {command from rules file}
Stack verification command
{cmd}not found. Install it for auto-verification.
Reads: .claude/rules/stack-*.md
Writes: Nothing (read-only)
Detects stack profile staleness:
go.mod says 1.23 but profile says 1.22):
Stack profile for Go may be stale — project uses Go 1.23, profile configured for 1.22. Run
/arch:init --forceto regenerate stack configuration. c. Check if new stack indicators appeared (e.g., aCargo.tomlwas added): New stack detected: Rust. Run/arch:initto generate stack configuration.
Reads: .claude/rules/stack-*.md, stack indicator files
Writes: Nothing (drift is reported, user fixes it)
Injects stack rules and verification reminders into crafter context:
## Stack Context
- Language: {Language} {Version}
- Verify after changes: `{verification command}`
- Key rules: {top 3 rules from profile}
- Anti-patterns to avoid: {top 3 anti-patterns from profile}
Reads: .claude/rules/stack-*.md
Writes: Nothing (read-only — context injection only)
Adds Stack Compliance to critic review:
| Rule | Status | Notes |
|------|--------|-------|
| Error wrapping | PASS | All errors wrapped with fmt.Errorf context |
| Modern idioms | WARN | Manual loop at line 42 could use slices.Contains |
| Verification | PASS | go vet passed |
Reads: .claude/rules/stack-*.md, implementation files
Writes: Nothing (compliance output goes in review document)
Checks for stack profile health:
## Stack Health
- Go 1.22: rules current, go vet available, hook active
- TypeScript 5.4: rules current, tsc available, hook active
No stack profiles configured. Run /arch:init to detect and configure tech stack.
Reads: .claude/rules/stack-*.md, stack indicator files, .claude/settings.json
Writes: Nothing (diagnostic output only)
Includes stack context in transition notes:
design → deliver handoff:
Stack context for Crafter: {Language} {Version} configured. Rules at .claude/rules/stack-{language}.md. Verify with
{verification command}after changes. b. Fordeliver → discernhandoff: Stack context for Critic: Review against .claude/rules/stack-{language}.md. Check Stack Compliance section.
Reads: .claude/rules/stack-*.md
Writes: Nothing (read-only — guidance injection only)
.claude/rules/stack-*.md persists across sessions (auto-loaded by Claude Code)/arch:init --force to update; profiles don't auto-update/arch:init --force