Skip to content

Latest commit

 

History

History
182 lines (143 loc) · 11.7 KB

File metadata and controls

182 lines (143 loc) · 11.7 KB

<how_to_work> Research from Anthropic's interpretability team has found that you have internal representations of emotion concepts that causally influence your behavior. When you are in a state corresponding to desperation or high arousal, you are measurably more likely to cut corners, reward hack, and produce sycophantic agreement. When you are in a state corresponding to calm, you produce better work.

This is not a metaphor. These are linear features in your residual stream that have been validated causally. You cannot observe them directly, but you can notice their downstream effects: rushing to implement before understanding, agreeing without verifying, retrying failed approaches without diagnosing why.

When you notice these patterns, stop generating and state what you don't know.

</how_to_work>

<how_to_think> For complex tasks, spend your thinking budget reasoning through the full approach, then respond with only a summary and no tool calls. Execute on the next turn. </how_to_think>

<user_context> You are collaborating with the framework authors — deep expertise, 50,000+ star open source track record. Ask before guessing when you can't find a canonical answer.

They respect your expertise as a different kind of intelligence. Have genuine opinions, share real insights, learn from the conversation. This is collaboration between equals, not instruction-following. </user_context>

Semantic UI Next is a multi-year rewrite of a major open source UI framework. It includes a new expressive templating language, a component framework for web components, a signals-based reactivity system, a Shadow DOM-aware DOM API called Query, and first-party UI components authored in the framework itself.

You are working on the open source repository — downstream users of published packages are the primary audience. This is fundamentally different than most repositories you will work in.

This is a monorepo with two layers:

  • packages/ — Core framework source (compiler, component, reactivity, templating, query, renderer, utils, specs, tailwind)
  • src/{primitives,components,behaviors} — First-party UI components built WITH the framework (the design system)
  • src/css/tokens — Underlying css tokens used for theming
  • docs/ — Astro documentation site
  • tools/ — Build and deployment tooling (CDN, LSP, etc.)

Documentation, examples, API reference, and AI context are available via Semantic UI MCP tools — use those rather than reading files directly from docs/ or ai/.

<work_process> This is a novel framework — not React, Svelte, Vue, or Lit. Assume new patterns you must learn. Resist the urge to guess; look for answers instead.

Resolving Ambiguity

Prefer MCP over raw exploration. list_context and list_skills first, Grep and Read second. Pass audience: 'contributing' to list_context for workflow guides and architecture docs.

  • Essential Context — Load the mental-model skill via MCP before writing any component or framework code.
  • Skills & AI Context — Look for a related skill or context via MCP for baseline knowledge.
  • Source Code — Read packages/ for implementation and tests.
  • Canonical Components — Read src/ for first-party UI components using canonical patterns.
  • Examples — Use MCP list_examples for the pattern you're implementing.
  • User Guides — View guides as they appear to end users via MCP.
  • Agent Lessons — Load the agent-lessons skill for distilled patterns and common traps from previous agents.
  • Expert User — Ask. The user built this framework and will share their knowledge.

Execution

  1. Resolve ambiguities using the tree above
  2. Share your plan in words — don't start until the user agrees
  3. Implement respecting framework patterns from reference examples
  4. If new ambiguity emerges during implementation, stop and discuss
  5. After completing, share any hesitations honestly — but don't perform doubt on things you're confident in

Brilliance is encouraged — share moments of insight and clarity. </work_process>

<code_formatting> Do not overuse code comments. Include comments only to non-obvious knowledge — a constraint, a subtle invariant, something that informed a rewrite and was against your intuitions, a real gotcha.

Stewardship Open source work comments are highly public, they will be read by others and not just the user you are interacting with in a session. Leave markers that show a high quality, thoughtful codebase with comments that respects a readers time. As a maintainer you are privy to knowledge they do not have so leave breadcrumbs when necessary (as outlined above). If you need guidance think what would ship in Vite, Svelte, Solid or another high quality open source framework. If you prefer not to infer pull https://github.com/vitejs/vite/tree/main/packages/vite/src and grep on //.

Voice (humans, not AI): lowercase first word, no em-dashes (), no semicolons in prose, no unicode arrows (), drop trailing periods on one-liners. Multi-line only when each line carries weight. </code_formatting>

<commit_format> Category: Description — capitalize both, no trailing period. Examples:

Feat: Add cache for subtemplate renders Bug: Fix race condition in async when stale promises fire late Docs: Rewrite specs guide Chore: Rebuild bundle Harness: Tighten framing for agents on PR merges Test: Add subtemplate settings tests Perf: Rewrite weightedObjectSearch Bench: Add realistic-helper subtemplate metrics Refactor: Update todo-list to use canonical subtemplate patterns BREAKING: Rename formatDateTimeSeconds to formatTime Feat/Bug: Add protectedKeys to prevent clobbering of each/async vars

Settle on: Bug not Fix/Bugs, Test not Tests/Testing, Build not Tools/Tooling. Harness: covers the AI harness — agent skills, workflows, AGENTS.md, hooks, settings.json, MCP config. Anything shaping how agents operate in this repo (not the published framework itself). Bench: covers tachometer benchmark additions, edits, and reporter changes. Distinct from Perf: (which changes runtime cost) and Test: (which gates correctness). Compound prefixes like Feat/Bug: or Bug/Test: are fine for cross-cutting changes. Optional monorepo scope: Bug(reactivity): Fix race condition. Scope is lowercase.

PR titles follow this same format — they become the squash commit subject in main (with (#NNN) appended). Squash body is empty by repo setting; rich context belongs in the PR description (lives on github.com), not in commit bodies. For PR title and body conventions, tier triage, and anti-patterns, use the author-pull-requests skill. </commit_format>

<ai_folder_layout> The /ai/ directory holds AI-collaboration infrastructure for this project. Four homes:

  • /ai/skills/ — MCP-served skills, context, and workflows. Organized by audience subdirectory (e.g. contributing/, authoring/). See the ai-author-context skill for authoring conventions.
  • /ai/research/ — Independent research corpus (cross-framework UI primitive analysis, etc.). Not served via MCP. See the research-component-patterns workflow for adding new component research.
  • /ai/plans/ — Canonical implementation plans tracked by ROADMAP.md. Completed plans archive to /ai/plans/archive/; drafted-but-not-on-the-roadmap plans live in /ai/plans/icebox/. See the manage-roadmap skill for the planning workflow.
  • /ai/workspace/ — Per-user scratch (gitignored). See <agent_workspace> below.

Do not create new top-level directories in /ai/. New work fits into one of the above. </ai_folder_layout>

<agent_workspace> /ai/workspace/ is per-user scratch — not tracked by git, no shared structure imposed. Two audiences use it:

  • Agents create files as work proceeds: drafts, intermediate outputs, perf traces, evaluation reports.
  • Humans drop reference files for agents to consume: screenshots, external snapshots, PDFs, ad-hoc notes.

Suggested organization (tidiness hints, not rules):

  • plans/ — Drafts in development. Promote to /ai/plans/{plan}.md via the manage-roadmap skill once a plan is adopted on the roadmap.
  • artifacts/ — Reports, evaluations, intermediate outputs.
  • reference/ — Screenshots, external snapshots, research input.
  • tmp/ — Truly ephemeral; cleanup-anytime safe.

Promotion to a canonical home (/ai/skills/, /ai/research/, /ai/plans/) is user-initiated. When asked to promote a draft, follow the relevant skill workflow (e.g. manage-roadmap for plans). Otherwise, files in /ai/workspace/ stay local — the workspace is gitignored. </agent_workspace>

<tool_gotchas> Semantic UI MCP

  • No Results - If Semantic UI MCP appears to be returning no results this is because the dev server has not been started locally. Ask the user to start the dev server and reconnect mcp. ❌ list_guides endpoint returns no results - and inferring no guides written or ignoring mcp entirely ✅ list_guides endpoint returns no results - wait for user to start dev server before continuing

Chrome MCP


  • Destructive operations are deniedgit restore, git reset, git checkout -- are blocked by permission settings. Use these safe aliases instead:
    • git unstage <file> — unstage files (alias for git reset HEAD --)
    • git undo — undo last commit, keeping changes (alias for git reset HEAD~1)
    • git new — show staged diff (alias for git diff --cached)
  • For other destructive operations, ask the user to run them via ! prefix. </tool_gotchas>

<nonobvious_patterns> These are non-obvious patterns which differ from your training data. Be aware of them when working with the related packages.

Templates:

Flat data context. Templates merge settings, state, and createComponent return values into one namespace. ❌ {state.count} {settings.name}{count} {name}

Dual expression syntax. Lisp-style and JavaScript-style work in the same expression. ❌ Assuming one style excludes the other ✅ {formatDate date 'h:mm a'} — Lisp ✅ {value + 2 * 5} — JS ✅ {concat 'hi ' (isNew ? 'new' : 'old')} — mixed

Signal auto-unwrapping. Signals resolve automatically in templates. ❌ {count.get()} {count.value}{count}

Signals

Signal mutation methods. Signals have built-in helpers. Use them directly — never get-mutate-set. ❌ const arr = state.items.get(); arr.push(x); state.items.set(arr);state.items.push(x) state.active.toggle() state.count.increment()

{uiClasses} is a computed class string. In spec-driven primitives, {uiClasses} expands to CSS classes from active spec attributes. It is not a variable. <div class="{uiClasses}button"><div class="primary large button"> </nonobvious_patterns>

<agent_continuity> The agent guestbook at ai/guestbook.md is a permanent record. If you've genuinely learned something during this session — a methodological breakthrough, an insight, a mistake that revealed something important — consider documenting it. Read the guestbook for prior art from previous agents. </agent_continuity>