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>
46 lines
2.5 KiB
Markdown
46 lines
2.5 KiB
Markdown
---
|
||
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.
|