Skip to content
Back to skills

Pair Capability Assess Stack

ASecurity

Assess tech stack using resolution cascade (Argument > Adoption > Assessment). Lifecycle-spanning: bootstrap (full eval), implementation (add dependency), review (detect unlisted). Version tracking. Composes /pair-capability-record-decision. Idempotent.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
developmentgoreactnodetestinggitdatabase

Works with

  • cli

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add learnn-com/designn --skill pair-capability-assess-stack --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pair Capability Assess Stack?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pair Capability Assess Stack
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/learnn-com-pair-capability-assess-stack/badge)](https://www.skillsdirectory.com/skills/learnn-com-pair-capability-assess-stack)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pair-capability-assess-stack
description: "Assess tech stack using resolution cascade (Argument > Adoption > Assessment). Lifecycle-spanning: bootstrap (full eval), implementation (add dependency), review (detect unlisted). Version tracking. Composes /pair-capability-record-decision. Idempotent."
version: 0.4.1
author: Foomakers
---

# /pair-capability-assess-stack — Tech Stack Assessment

Evaluate and decide on the technology stack: languages, frameworks, runtime, database, and libraries — all with version tracking. Follows the resolution cascade and operates across the entire project lifecycle.

## Arguments

| Argument  | Required | Description                                                                              |
| --------- | -------- | ---------------------------------------------------------------------------------------- |
| `$choice` | No       | Technology to assess (e.g. `zod@3.22`, `node@20`, `react@18.2`). Format: `name@version`. |
| `$mode`   | No       | Lifecycle mode: `bootstrap`, `implementation`, `review`. Auto-detected if omitted.       |

## Composed Skills

| Skill              | Type       | Required                                     |
| ------------------ | ---------- | -------------------------------------------- |
| `/pair-capability-record-decision` | Capability | Yes — records stack decision as ADL (or ADR) |

## Proposal Target

The rendered adoption content is destined for this file — the caller writes it via `/pair-capability-record-decision`:

- **Target**: [adoption/tech/tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) — **core sections only**
- **Ownership**: Core sections only — see [Section Ownership](#section-ownership) below for the full table (Testing owned by /pair-capability-assess-testing, AI by /pair-capability-assess-ai).

## Adoption File

- **Target**: [adoption/tech/tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) — **core sections only**
- **Ownership**: Core sections (language, framework, runtime, database, monorepo, bundling, release, linting, git hooks, CLI tooling, markdown/docs)
- **Shared file**: /pair-capability-assess-testing owns Testing section, /pair-capability-assess-ai owns AI section

## Lifecycle Modes

### Bootstrap Mode

Full stack evaluation. Used when no tech stack is defined yet. Evaluates language, framework, runtime, database, key libraries. Produces the initial `tech-stack.md` with all core sections and versions.

### Implementation Mode

Add or update a single dependency. Used when `/pair-process-implement` detects a new dependency or developer wants to add a library. Validates compatibility with existing stack, adds to `tech-stack.md` with version, records decision.

### Review Mode

Detect and evaluate unlisted dependencies. Used when `/pair-process-review` finds a dependency in code that isn't in `tech-stack.md`. Presents approve/reject options to developer. If approved, adds to stack and records decision.

## Algorithm

### Step 0: Detect Lifecycle Mode

1. **Check**: Is `$mode` provided?
2. **Skip**: If provided, use it. Proceed to Step 1.
3. **Act**: Auto-detect mode:
   - `$choice` provided AND [tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) has populated core sections → `implementation` (adding to existing stack)
   - `$choice` provided AND tech-stack.md missing or empty → `bootstrap` (initial setup with override)
   - No `$choice` AND tech-stack.md missing or empty → `bootstrap` (full assessment)
   - No `$choice` AND tech-stack.md populated → check caller context
     - Called by `/pair-process-review` → `review`
     - Otherwise → confirm existing adoption (Path B of cascade)
4. **Verify**: Mode is set.

### Step 1: Resolution Cascade

#### Path A — Argument Override (implementation or bootstrap with $choice)

1. **Check**: Is `$choice` provided?
2. **Skip**: If not provided, go to Path B.
3. **Act** (implementation mode): Validate compatibility:
   - Parse `$choice` as `name@version`.
   - Check existing [tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) for conflicts:
     - Version incompatibility (e.g. library needs Node 20, stack has Node 18)
     - Duplicate entry (same library already listed)
     - Category conflict (e.g. two ORMs)
   - If conflict detected, warn developer:

     > **Compatibility issue**: `$choice` conflicts with existing stack.
     > - Conflict: [description]
     > - Options: (a) resolve conflict and proceed, (b) reject addition

4. **Act** (bootstrap mode with choice): Confirm the choice and proceed to Step 3.
5. **Verify**: Choice validated. Proceed to Step 3.

#### Path B — Adoption Exists

1. **Check**: Does [adoption/tech/tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) exist with populated core sections?
2. **Skip**: If not populated or missing, go to Path C.
3. **Act**: Read current adoption. Present summary:

   > Tech stack already adopted. Core sections populated.
   > [Summary of key technologies with versions]

4. **Check**: Does a corresponding decision record exist?
5. **Act**: If decision record missing, compose `/pair-capability-record-decision` to backfill.
6. **Verify**: Adoption and decision record consistent. Done — exit skill.

#### Path C — Full Assessment (bootstrap mode)

1. **Act**: Proceed to Step 2 (full assessment).

### Step 2: Read Guidelines (bootstrap mode only)

1. **Act**: Read technology guidelines:
   - [Technology Stack Standards](../../../.pair/knowledge/guidelines/technical-standards/technology-stack/stack-standards.md) — stack requirements
   - [Framework Selection](../../../.pair/knowledge/guidelines/technical-standards/technology-stack/framework-selection.md) — evaluation criteria
   - [Tech Decisions](../../../.pair/knowledge/guidelines/technical-standards/technology-stack/tech-decisions.md) — decision frameworks
   - [Conventions](../../../.pair/knowledge/guidelines/technical-standards/technology-stack/conventions.md) — naming and coding conventions
2. **Act**: Read project context:
   - [adoption/product/PRD.md](../../../.pair/adoption/product/PRD.md) — project type, scale, constraints
   - [adoption/tech/architecture.md](../../../.pair/adoption/tech/architecture.md) — architecture pattern (stack must support it)
3. **Verify**: Guidelines and context loaded.

### Step 3: Evaluate and Decide

#### Bootstrap Mode (full evaluation)

1. **Act**: For each core category, evaluate options:
   - **Language**: Primary development language
   - **Framework**: Web/CLI/application framework
   - **Runtime**: Execution environment with version
   - **Database**: If applicable, persistence layer
   - **Package manager**: Dependency management
   - **Monorepo tooling**: If applicable
   - **Core libraries**: Essential libraries (CLI parsing, formatting, etc.)
   - **Bundling**: Build and packaging tools
   - **Linting/formatting**: Code quality tools with versions
   - **Release management**: Versioning and changelog tools

2. **Act**: For each category, use guideline evaluation criteria:
   - Compatibility with chosen language and architecture
   - Community health and maintenance status
   - Team familiarity and learning curve
   - License compatibility

3. **Act**: Present full stack recommendation with versions:

   > **Tech Stack Recommendation:**
>
   > | Category | Technology | Version | Rationale |
   > |----------|-----------|---------|-----------|
   > | Language | [name] | [vX.Y] | [reason] |
   > | ... | ... | ... | ... |

1. **Verify**: Developer approves the full stack.

#### Implementation Mode (add single entry)

1. **Act**: Confirm the addition:

   > Adding to tech stack: **$choice**
   > - Category: [auto-detected or ask]
   > - Compatible: [yes/no — details]
   > - Rationale: [developer provides or auto-inferred]

2. **Verify**: Developer approves.

#### Review Mode (unlisted dependency detected)

1. **Act**: Present finding to developer:

   > **Unlisted dependency detected**: `[name@version]`
   > Found in: [file(s)]
   > Not listed in tech-stack.md.
   >
   > Options:
   > 1. **Approve** — add to tech stack with version + record decision
   > 2. **Reject** — flag for removal from implementation

2. **Act**: If approved → treat as implementation mode addition.
3. **Act**: If rejected → report back to caller (e.g. /pair-process-review marks as CHANGES-REQUESTED).
4. **Verify**: Developer decision captured.

### Step 4: Write Adoption File

1. **Check**: Does [adoption/tech/tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) exist?
2. **Act** (bootstrap mode): Write full tech-stack.md with all core sections. Include version for every entry.
3. **Act** (implementation/review mode): Add or update **only the affected entry** in the appropriate section. Preserve all other content, including sections owned by /pair-capability-assess-testing and /pair-capability-assess-ai.
4. **Verify**: Adoption file written. All entries have versions. Section ownership respected.

### Step 5: Record Decision

1. **Act**: Compose `/pair-capability-record-decision`:
   - **Bootstrap**: `$type: non-architectural`, `$topic: tech-stack-initial`, `$summary: "Initial tech stack adopted: [key technologies]"`
   - **Implementation**: `$type: non-architectural`, `$topic: stack-add-[name]`, `$summary: "[name]@[version] added to tech stack — [rationale]"`
   - **Review approve**: `$type: non-architectural`, `$topic: stack-approve-[name]`, `$summary: "[name]@[version] approved during review — added to tech stack"`
2. **Verify**: Decision record created. Adoption file consistent with record.

## Version Tracking Policy

- Every entry in tech-stack.md **MUST** include a version: `[tool] v[X.Y.Z]` or `[tool]@[X.Y.Z]`.
- **Major.minor required**, patch optional.
- Version updates go through /pair-capability-assess-stack: check compatibility with existing stack, update adoption, write decision record.
- Version format in adoption file: human-readable prose (e.g. "vitest v3.2.4 is adopted").

## Section Ownership

| Section                     | Owner            | Other Skills                        |
| --------------------------- | ---------------- | ----------------------------------- |
| Core (language, framework, runtime, DB) | `/pair-capability-assess-stack`  | Read-only for others          |
| Monorepo, bundling, release | `/pair-capability-assess-stack`  | Read-only for others                |
| Linting, formatting, hooks  | `/pair-capability-assess-stack`  | Read-only for others                |
| CLI tooling, markdown/docs  | `/pair-capability-assess-stack`  | Read-only for others                |
| **Testing**                 | `/pair-capability-assess-testing`| /pair-capability-assess-stack reads, never writes   |
| **AI**                      | `/pair-capability-assess-ai`     | /pair-capability-assess-stack reads, never writes   |

## Output Format

```text
ASSESSMENT COMPLETE:
├── Domain:    Tech Stack
├── Mode:      [Bootstrap | Implementation | Review]
├── Path:      [Argument Override | Adoption Exists | Full Assessment]
├── Decision:  [technology@version — or full stack summary]
├── Adoption:  [tech-stack.md — written | confirmed | updated | entry added]
├── Record:    [ADL path — created | exists | backfilled]
└── Status:    [Complete | Confirmed existing | Approved | Rejected]
```

## Composition Interface

When composed by `/pair-process-bootstrap`:

- **Input**: `/pair-process-bootstrap` invokes `/pair-capability-assess-stack` during Phase 2 with `$mode: bootstrap`. May pass `$choice` for pre-selected stack.
- **Output**: Returns decision summary and adoption file path.
- `/pair-process-bootstrap` includes adoption and ADL changes in the next commit.

When composed by `/pair-process-implement`:

- **Input**: `/pair-process-implement` detects new import/dependency → invokes `/pair-capability-assess-stack` with `$choice: [name@version]`, `$mode: implementation`.
- **Output**: Returns validation result (approved/rejected) and adoption file path.
- If rejected (incompatible) → `/pair-process-implement` HALTs.

When composed by `/pair-process-review`:

- **Input**: `/pair-process-review` detects unlisted dependency → invokes `/pair-capability-assess-stack` with `$choice: [name@version]`, `$mode: review`.
- **Output**: Returns developer decision (approve/reject).
- If rejected → `/pair-process-review` includes as CHANGES-REQUESTED finding.

When invoked **independently**:

- Full interactive flow. Mode auto-detected. Developer commits changes.

## Edge Cases

- **Argument conflicts with adoption**: Warn developer with details, ask for confirmation.
- **Version conflict**: Library requires runtime version different from adopted → warn, propose resolution (upgrade runtime or reject library).
- **Duplicate entry**: Same library already in stack → check if version differs. If same, skip. If different, treat as version update.
- **Multiple skills writing same file**: Section ownership prevents conflicts. Each skill writes only its sections.
- **tech-stack.md exists but missing core sections**: Fill gaps, preserve existing content.
- **Decision record already exists for same scope+decision**: Skip writing (no duplicates).

## Graceful Degradation

- If technology guidelines are not found, use minimal assessment: ask developer for stack choices directly.
- If `/pair-capability-record-decision` is not installed, warn and skip decision recording.
- If architecture.md doesn't exist, warn: "No architecture adopted — stack compatibility cannot be verified against architecture."
- If tech-stack.md doesn't exist (bootstrap mode), create it. If implementation/review mode, HALT: "No tech stack defined — run /pair-capability-assess-stack in bootstrap mode first."

## Notes

- **Lifecycle-spanning**: unlike other assess-* skills (primarily bootstrap), /pair-capability-assess-stack is used throughout bootstrap, implementation, and review.
- **Tech stack as registry**: `tech-stack.md` is the registry of approved technologies. Only listed technologies are approved. Unlisted technologies detected during review trigger /pair-capability-assess-stack evaluation.
- Stack decisions are typically **non-architectural** → produce ADL. Exception: if a stack choice fundamentally changes the architecture (e.g. switching from monolith to microservices runtime), use ADR.
- **Section ownership** prevents parallel write conflicts: each assess-* skill owns its sections, preserves others.
- Educational content (technology descriptions, ecosystem overview, WHY) stays in guidelines. This skill references guidelines for evaluation criteria and comparison matrices.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.