agentsclimarketplace

Loadout system design

Skill JOndarza/loadout/.claude/skills/loadout-system-design

Complete system design reference for the Loadout VSCode extension — a GUI panel for managing Claude Code agents, skills, and commands as swappable equipment loadouts. Use at the start of ANY implementation task to ensure design consistency. Covers: two-process architecture (Extension Host Node.js + Angular 21 Webview), postMessage protocol, data.js filesystem layer, signal-based state services, storage layout, and non-negotiable coding rules. Invoke when implementing stories, adding features, reviewing code, making ANY UI/styling change (design tokens, SCSS, components, animations), or when any system design question arises in Loadout.From its SKILL.md

Install
npx -y skills add JOndarza/loadout --skill loadout-system-design

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

2 things 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.
  • runs commandsInstructs the agent to run 1 command, including `cd webview && npm run build`.

SKILL.md

4.2 KB, 871 tokens by cl100k_base, as published. Nobody here has run it

Loadout — System Design Reference

Quick Navigation

What you needLoad
Two-process overview, file map, state flow, build pipelinereferences/architecture.md
Extension entry, src/ modules, data.js API, security modelreferences/extension-host.md
Angular 21, state services, DataSyncService, shared primitivesreferences/webview-angular.md
Full message catalogue (WebviewMessage + ExtensionMessage types)references/messaging-protocol.md
Domain types, storage paths, profiles, hash/sync mechanicsreferences/domain-storage.md
File size limits, CommonJS rules, Angular rules, git, formattingreferences/coding-rules.md
Design tokens, color palettes, SCSS mixins, animations, a11yreferences/ui-design-system.md

Non-negotiable invariants

These apply everywhere, always — no exceptions.

  1. No VSCode API in webview — never import vscode or use fs/path/os from any file under webview/.
  2. All filesystem mutations go through data.js — no ad-hoc fs.writeFileSync in src/ modules.
  3. Every Angular component: standalone: true + ChangeDetectionStrategy.OnPush — no exceptions.
  4. State in core/state/*.state.ts signal services only — components are dumb views; no component-local mutable state for domain data.
  5. Signals for state, RxJS only for the bridge stream — no BehaviorSubject / ReplaySubject for state.
  6. File size cap ~400 lines — split into a new src/ module or Angular subcomponent when approaching this.
  7. Profiles store filenames only — never copy file content into profiles.json.
  8. Icons: lucide-angular only — no SVG file imports, no inline <svg>.
  9. CommonJS in extension hostrequire() / module.exports in all .js root files; update-claude.mjs is the sole ESM exception.
  10. Build webview-dist/ before committing UI changes — run cd webview && npm run build.

Feature implementation checklist

When adding a new feature end-to-end, follow this order:

  1. Domain — add or extend types in webview/src/app/core/messages.ts (single source of truth for all shared types).
  2. Storage — decide persistence: profiles.json, ui-state.json, or a new data.js function. Update data.js and src/snapshot.js::buildInitialData if InitialData changes.
  3. Extension messages — add the WebviewMessage union variant and/or ExtensionMessage variant to messages.ts; handle the new case in src/message-handler.js.
  4. data.js — implement the filesystem operation (pure I/O, no VSCode API, no side effects beyond fs).
  5. State service — update the relevant core/state/*.state.ts to expose new signals or a setter; update DataSyncService.applyData() if InitialData fields changed.
  6. Component — create a standalone OnPush component or extend an existing feature. Inject the state service; never own domain state locally. Send actions via bridge.send() in methods, not templates.
  7. Validators — if new user-supplied input crosses the bridge, add a guard in src/validators.js and call it in message-handler.js before acting.
  8. Build — run cd webview && npm run build, verify webview-dist/ is updated.
  9. Git — stage specific files by name; conventional commit in imperative mood.

What ships with it: 7 files

45.0 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. 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.