Compile a GitHub identity into an animated, dark/light, self-hosted profile README.

Profile Control Plane example

Most profile generators render a banner or assemble remote widgets. Profile Control Plane turns your repositories into a coherent visual system: a hero, a project map, flagship work, and an expandable module registry—all generated from one reviewed YAML file and one of sixteen distinct templates.

What you get

  • One declarative profile.yaml as the authoring source of truth.
  • Sixteen templates, each producing four SVGs with native dark/light variants and reduced-motion support.
  • A generated GitHub-safe README.md with escaped metadata and optional star badges.
  • init, build, preview, and check commands with typed, fail-closed errors.
  • A bundled design-github-profile agent skill for evidence-backed positioning, profile archetype selection, visual review, and safe staging.
  • No hosted image API, database, analytics, or required token at render time.

Every preview below is generated from the same examples/lifcc/profile.yaml. GitHub selects the matching dark or light asset automatically.

Control Plane

The default Control Plane hero is shown at the top of this README.

View the closed-loop architecture map Control Plane architecture map

Command Deck (command-deck)

Command Deck template
View the execution deck Command Deck execution map

Signal Grid (signal-grid)

Signal Grid template
View the signal topology Signal Grid topology map

Editorial

Editorial template
View the working index Editorial working index

Developer Workbench (bento-grid)

Developer Workbench template
View the connected build map Developer Workbench build map

Terminal

Terminal template
View the process tree Terminal process tree

Blueprint

Blueprint template
View the assembly drawing Blueprint assembly drawing

Constellation

Constellation template
View the star chart Constellation star chart

Metro Map (metro)

Metro Map template
View the network map Metro network map

Monolith (monolith)

monolith-output/assets/hero-dark.svg"> Monolith template
View the typographic route Monolith typographic route

Interlace (interlace)

Interlace template
View the project weave Interlace project weave

Cipher Print (cipher-print)

Cipher Print template
View the engraved index Cipher Print engraved index

Field Specimen (field-specimen)

Field Specimen template
View the classification plate Field Specimen classification plate

Patch Bay (patchbay)

Patch Bay template
View the cable routing Patch Bay cable routing

Cartograph (cartograph)

Cartograph template
View the contour survey Cartograph contour survey

Foundry (foundry)

Foundry template
View the casting floor Foundry casting floor

Quick start

The package is currently distributed from GitHub. Build and link the CLI locally:

git clone https://github.com/majiayu000/profile-control-plane.git
cd profile-control-plane
npm ci
npm link

Create a starter configuration from public GitHub metadata:

profilectl init YOUR_GITHUB_USERNAME
profilectl check
profilectl preview --all-templates

Open the printed comparison page, choose a direction, set theme.preset, and refine profile.yaml until it tells the right story. Then build:

profilectl build --out .profile-output

If the unauthenticated GitHub API is rate-limited, provide an existing token only for init:

GITHUB_TOKEN=your_token profilectl init YOUR_GITHUB_USERNAME

The token is read from the environment and is never written to the configuration or generated assets.

Configuration

version: 1
github:
  username: octocat
identity:
  name: Octocat
  headline: AGENT INFRASTRUCTURE
  tagline: Building the systems around coding agents.
theme:
  preset: control-plane
  primary: "#00A7D1"
  secondary: "#E84A8A"
layers:
  - name: DIRECT
    project: agent-cli
    description: The primary execution surface
    tone: primary
flagships:
  - repo: agent-cli
    role: EXECUTE
    description: A fast, inspectable coding agent.
    tone: primary
module_groups: []
settings:
  show_stars: true
  show_badges: true

The complete contract is schemas/profile.schema.json. The starter importer uses factual GitHub names, descriptions, languages, stars, and timestamps. It deliberately emits generic SYSTEM 01 / PROJECT 01 labels because semantic architecture should be reviewed, not hallucinated.

See the curated lifcc configuration and its generated output.

Templates

Preset Best fit Visual language
control-plane Infrastructure, agent systems, connected tooling Animated control room and systems loop
command-deck Operations-heavy systems and flagship execution Mission console and command bus
signal-grid Networked projects and relationship-heavy systems Signal topology and connected mesh
editorial Maintainers, researchers, selected body of work Technical journal and working index
bento-grid Product builders and modular project portfolios Connected workbench and signal map
terminal CLI tools, daemons, and hands-on builders Live shell session and process tree
blueprint Spec-driven engineering and deliberate systems Engineering drawing and assembly map
constellation Broad portfolios with a few standout projects Animated star atlas and signal chain
metro Many repositories grouped into clear domains Transit network with moving train paths
monolith Focused specialists and assertive bodies of work Internationalist typographic poster
interlace Work connected across disciplines or layers Woven bands and a project loom
cipher-print Meticulous systems and high-craft maintainers Guilloché engraving and edition marks
field-specimen Exploratory work and branching research Natural-history plate and taxonomy
patchbay Tools wired into one routed signal path Modular patch panel and animated cables
cartograph Broad work charted across domains and terrain Topographic survey and contour index
foundry Hardened tools forged, cast, and shipped Casting floor with molten pour

The bundled agent skill can recommend a preset from repository evidence. The user remains the decision maker: profilectl preview --all-templates renders the same configuration in all sixteen directions before anything is built or staged.

Commands

Command Purpose
profilectl init <username> Import public metadata into a reviewable starter config.
profilectl build Compile README and SVGs into a dedicated output directory.
profilectl preview Serve the selected template in dark/light mode at 127.0.0.1.
profilectl preview --all-templates Compare every template using the same configuration.
profilectl check Validate schema, generated XML, references, and optional online links.

Use --help on any command for options. build --force refuses to replace the current directory, a filesystem root, or any directory containing .git.

Publish safely

Generated output is intentionally separate from your profile repository. On a new branch in the USERNAME/USERNAME repository, copy only these files:

.profile-output/README.md  -> README.md
.profile-output/assets/    -> assets/

Review the rendered branch and diff before merging. The CLI never commits, pushes, changes pins, or merges to main.

Agent skill

Copy the bundled skill into your agent skill directory, or reference it from this repository:

cp -R skills/design-github-profile ~/.codex/skills/

Then ask: Use $design-github-profile to redesign my GitHub profile. The skill audits existing profile files, separates verified facts from interpretations and user intent, proposes an evidence-backed profile direction, and evaluates the rendered result before preparing a preview branch. Detailed archetypes, visual guidelines, and the publication rubric load only when the task needs them.

The agent recommends a narrative and a supported preset, explains its evidence, and can render all templates for user choice. If the desired visual direction is outside the declared presets, it reports the capability gap instead of inventing a theme.preset or forcing the account into an unsupported metaphor.

Design and safety

The compiler is pure: validated config goes in; static strings come out. Network and filesystem behavior live in explicit adapters. SVG output is XML-validated and rejected if it contains script elements, event attributes, or JavaScript URLs. Files are staged before an atomic directory replacement.

Read the architecture foundation, security policy, and contribution guide for details.

Development

npm ci
npm run check
npm pack --dry-run

The test gate requires at least 80% line, statement, function, and branch coverage.