Files
claude-skills/.wiki/concepts/active-platform-decision.md
vitya 4382fd36b9 refactor(wiki): migrate this repo's .wiki/ to canonical Karpathy layout
Stop being inconsistent with our own fixed project-bootstrap template.

- SUMMARY.md → index.md (catalog by type, with one-line hooks)
- source/*.md → concepts/*.md (with `git mv` so history is preserved)
- WORKFLOW.md removed (workflow lives in wiki-maintainer, not duplicated here)
- New: .wiki/CLAUDE.md (project schema, Karpathy gist URL pinned at top)
- New: log.md (append-only op log; backfilled with prior decisions)
- New: overview.md (single project intro page)
- New: raw/README.md (immutability note; replaces .gitkeep placeholder)
- Empty .gitkeep added to entities/, packages/, sources/
- Migrated pages got `type: concept` frontmatter

After this, wiki-maintainer reads .wiki/CLAUDE.md → index.md as it expects,
and the layout matches what newly-bootstrapped projects will look like.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 11:22:43 +03:00

46 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Decision: active-platform skill"
type: concept
updated: 2026-04-28
---
# Decision: `active-platform` skill
_2026-04-28._
## Problem
The user develops on multiple machines (Windows primary, Linux/macOS secondary). I was generating bash one-liners by default — wrong shell for their daily workstation. Need a way to make Windows/PowerShell the default and switch on a phrase.
## Options weighed
- **Project memory** — wrong scope (project-only, doesn't cross repos).
- **Global `~/.claude/CLAUDE.md`** — right scope, simple, but the user explicitly preferred a skill: "поживём со скиллом" (let's live with a skill and iterate).
- **New skill** ← chosen.
The user's reasoning for the skill route: it's a discoverable, shareable artifact that lives next to their other 12 skills, and it can evolve with the same edit/build/install loop.
## What the skill does
Switches command/example generation between Windows / Linux / macOS based on session signals. Default = Windows + PowerShell. Trigger phrases in RU + EN (e.g. "мы на винде", "we're on Linux"). The rule applies only to **user-facing output** — tool calls still follow the harness's `Shell:` line.
Full spec: [`skills/active-platform/SKILL.md`](../../skills/active-platform/SKILL.md).
## Why this is a skill, not memory
- **Discoverability:** appears in `available_skills` list, can be re-read or audited.
- **Cross-repo:** installed into `~/.claude/skills/`, applies in every session regardless of project.
- **Iterable:** lives in this repo's `skills/` so we can edit + reinstall as we learn what triggers and exceptions actually happen in practice.
## Wired into `project-bootstrap`
The default platform should travel with every new project we create. Updated `project-bootstrap` so its `CLAUDE.md.template` adds a fifth trigger line: `we're on Windows`. That line is one of `active-platform`'s recognized switches, so any project bootstrapped from now on starts pinned to Windows / PowerShell. If the user is bootstrapping on a Linux/macOS host, the `SKILL.md` Step 5 note tells them to swap the line for `we're on Linux` / `we're on macOS`.
Backfilled the same line into this repo's own `CLAUDE.md` (which was created from the old template).
## Open questions to revisit
- Are the trigger phrases comprehensive enough? Add real-world examples as they come up.
- WSL handling — currently treated as Linux. Reconsider if user has WSL-specific needs.
- macOS divergences (BSD coreutils, Homebrew) — minimal coverage now, expand if user actually uses macOS often.