AgentSkillsCN

breadboarding

将工作流描述转化为功能表,以直观呈现UI与代码的功能及其连接方式。可用于映射现有系统,或从模块化部件出发设计全新系统。

SKILL.md
--- frontmatter
name: breadboarding
description: Transform a workflow description into affordance tables showing UI and Code affordances with their wiring. Use to map existing systems or design new ones from shaped parts.

Breadboarding

Breadboarding transforms a workflow description into a complete map of affordances and their relationships. The output is always a set of tables showing numbered UI and Code affordances with their Wires Out and Returns To relationships. The tables are the truth. Mermaid diagrams are optional visualizations for humans.


Use Cases

1. Mapping an Existing System

You have a workflow you're trying to understand. Provide code repo(s) and a workflow description (always from the perspective of an operator trying to make an effect happen). Output: affordance tables + optional Mermaid.

2. Designing from Shaped Parts

You have a new system sketched as an assembly of parts (mechanisms) per shaping. Provide the parts list, the R (requirement/outcome), and optionally the existing system. Output: affordance tables + optional Mermaid.

3. Mixtures

An existing system that must remain as-is, plus new pieces or changes. Breadboard both together — existing affordances and new ones — showing how they connect.


Core Concepts

Places — A bounded context of interaction. The blocking test: can you interact with what's behind? No → different Place. Yes → same Place with local state changes. Places get IDs (P1, P2...) and can contain subplaces (P2.1, P2.2).

Affordances — Things you can act upon. UI affordances (U): inputs, buttons, displays. Code affordances (N): methods, subscriptions, stores, framework mechanisms.

Wiring — How affordances connect. Wires Out = control flow (what triggers what). Returns To = data flow (where output goes). Navigation wires go to Places, not to affordances inside them.


The Output: Affordance Tables

Every breadboard produces these tables:

Places Table

#PlaceDescription
P1Search PageMain search interface
P2Detail PageIndividual result view

UI Affordances Table

#PlaceComponentAffordanceControlWires OutReturns To
U1P1search-detailsearch inputtype→ N1
U2P1search-detailloading spinnerrender

Code Affordances Table

#PlaceComponentAffordanceControlWires OutReturns To
N1P1search-detailactiveQuery.next()call→ N2
N2P1search-detailactiveQuery subscriptionobserve→ N3

Data Stores Table

#PlaceStoreDescription
S1P1resultsArray of search results

Column Definitions

ColumnDescription
#Unique ID (P1, P2... for Places; U1, U2... for UI; N1, N2... for Code; S1, S2... for Stores)
PlaceWhich Place this affordance belongs to (containment)
ComponentWhich component/service owns this
AffordanceThe specific thing you can act upon
ControlThe triggering event: click, type, call, observe, write, render
Wires OutWhat this triggers: → N4, → P2 (control flow, including navigation)
Returns ToWhere output flows: → N3 or → U2, U3 (data flow)

References

Load these progressively as needed:

FileContainsLoad When
concepts.mdPlaces, subplaces, place references, modes, containment vs wiring, navigation wiringYou need to determine Place boundaries or model containment
procedures.mdStep-by-step for mapping existing systems (11 steps) and designing from parts (8 steps)Starting a breadboarding task
principles.mdNever use memory, mechanisms aren't affordances, two flows, data source rules, store placementReviewing or debugging a breadboard
catalog.mdComplete element/relationship reference, qualification criteria, verification checksQuick lookup of what qualifies as what
visualization.mdMermaid conventions, colors, lines, subgraphs, chunking, workflow annotationsCreating or reviewing Mermaid diagrams
slicing.mdVertical slicing methodology, constraints, procedure, visualizationBreaking a breadboard into implementation slices
reflection.mdDesign smell detection, naming test, splitting affordances, fixing wiringReviewing a breadboard for correctness
examples.mdExample A: mapping existing system, Example B: designing from parts + slicingNeed a worked example for reference