diff --git a/.daemon/logs/signet-2026-02-19.log b/.daemon/logs/signet-2026-02-19.log index c4a9167d2..a42d2c230 100644 --- a/.daemon/logs/signet-2026-02-19.log +++ b/.daemon/logs/signet-2026-02-19.log @@ -1021,3 +1021,13 @@ {"timestamp":"2026-02-19T11:07:33.075Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-shm"}} {"timestamp":"2026-02-19T11:07:33.078Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} {"timestamp":"2026-02-19T11:07:33.094Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db"}} +{"timestamp":"2026-02-19T11:07:38.264Z","level":"info","category":"git","message":"Auto-committed","data":{"message":"2026-02-19T11-07-38_auto_memory/memories.db-shm, memory/memories.db-wal, me","filesChanged":3}} +{"timestamp":"2026-02-19T11:12:12.009Z","level":"warn","category":"git","message":"Periodic sync failed: No git credentials found. Run `gh auth login` or set GITHUB_TOKEN secret."} +{"timestamp":"2026-02-19T11:17:12.006Z","level":"warn","category":"git","message":"Periodic sync failed: No git credentials found. Run `gh auth login` or set GITHUB_TOKEN secret."} +{"timestamp":"2026-02-19T11:22:12.009Z","level":"warn","category":"git","message":"Periodic sync failed: No git credentials found. Run `gh auth login` or set GITHUB_TOKEN secret."} +{"timestamp":"2026-02-19T11:27:12.008Z","level":"warn","category":"git","message":"Periodic sync failed: No git credentials found. Run `gh auth login` or set GITHUB_TOKEN secret."} +{"timestamp":"2026-02-19T11:32:12.011Z","level":"warn","category":"git","message":"Periodic sync failed: No git credentials found. Run `gh auth login` or set GITHUB_TOKEN secret."} +{"timestamp":"2026-02-19T11:36:23.114Z","level":"info","category":"watcher","message":"File added","data":{"path":"/home/nicholai/.agents/memory/memories.db-shm"}} +{"timestamp":"2026-02-19T11:36:23.114Z","level":"info","category":"watcher","message":"File added","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-19T11:36:23.116Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db-wal"}} +{"timestamp":"2026-02-19T11:36:23.127Z","level":"info","category":"watcher","message":"File changed","data":{"path":"/home/nicholai/.agents/memory/memories.db"}} diff --git a/memory/memories.db b/memory/memories.db index 9b942ba13..5eb0e2015 100644 Binary files a/memory/memories.db and b/memory/memories.db differ diff --git a/skills/signet-design/SKILL.md b/skills/signet-design/SKILL.md new file mode 100644 index 000000000..29594ada8 --- /dev/null +++ b/skills/signet-design/SKILL.md @@ -0,0 +1,85 @@ +--- +name: signet-design +description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.] +--- + +# Signet Design + +## Overview + +[TODO: 1-2 sentences explaining what this skill enables] + +## Structuring This Skill + +[TODO: Choose the structure that best fits this skill's purpose. Common patterns: + +**1. Workflow-Based** (best for sequential processes) +- Works well when there are clear step-by-step procedures +- Example: DOCX skill with "Workflow Decision Tree" → "Reading" → "Creating" → "Editing" +- Structure: ## Overview → ## Workflow Decision Tree → ## Step 1 → ## Step 2... + +**2. Task-Based** (best for tool collections) +- Works well when the skill offers different operations/capabilities +- Example: PDF skill with "Quick Start" → "Merge PDFs" → "Split PDFs" → "Extract Text" +- Structure: ## Overview → ## Quick Start → ## Task Category 1 → ## Task Category 2... + +**3. Reference/Guidelines** (best for standards or specifications) +- Works well for brand guidelines, coding standards, or requirements +- Example: Brand styling with "Brand Guidelines" → "Colors" → "Typography" → "Features" +- Structure: ## Overview → ## Guidelines → ## Specifications → ## Usage... + +**4. Capabilities-Based** (best for integrated systems) +- Works well when the skill provides multiple interrelated features +- Example: Product Management with "Core Capabilities" → numbered capability list +- Structure: ## Overview → ## Core Capabilities → ### 1. Feature → ### 2. Feature... + +Patterns can be mixed and matched as needed. Most skills combine patterns (e.g., start with task-based, add workflow for complex operations). + +Delete this entire "Structuring This Skill" section when done - it's just guidance.] + +## [TODO: Replace with the first main section based on chosen structure] + +[TODO: Add content here. See examples in existing skills: +- Code samples for technical skills +- Decision trees for complex workflows +- Concrete examples with realistic user requests +- References to scripts/templates/references as needed] + +## Resources + +This skill includes example resource directories that demonstrate how to organize different types of bundled resources: + +### scripts/ +Executable code (Python/Bash/etc.) that can be run directly to perform specific operations. + +**Examples from other skills:** +- PDF skill: `fill_fillable_fields.py`, `extract_form_field_info.py` - utilities for PDF manipulation +- DOCX skill: `document.py`, `utilities.py` - Python modules for document processing + +**Appropriate for:** Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations. + +**Note:** Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments. + +### references/ +Documentation and reference material intended to be loaded into context to inform Claude's process and thinking. + +**Examples from other skills:** +- Product management: `communication.md`, `context_building.md` - detailed workflow guides +- BigQuery: API reference documentation and query examples +- Finance: Schema documentation, company policies + +**Appropriate for:** In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working. + +### assets/ +Files not intended to be loaded into context, but rather used within the output Claude produces. + +**Examples from other skills:** +- Brand styling: PowerPoint template files (.pptx), logo files +- Frontend builder: HTML/React boilerplate project directories +- Typography: Font files (.ttf, .woff2) + +**Appropriate for:** Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output. + +--- + +**Any unneeded directories can be deleted.** Not every skill requires all three types of resources. diff --git a/skills/signet-design/assets/globals.css b/skills/signet-design/assets/globals.css new file mode 100644 index 000000000..66a3e9ed2 --- /dev/null +++ b/skills/signet-design/assets/globals.css @@ -0,0 +1,273 @@ +/* === Design System Globals === */ + +:root { + --color-bg: #08080a; + --color-surface: #0e0e12; + --color-surface-raised: #151519; + --color-border: rgba(255, 255, 255, 0.06); + --color-border-strong: rgba(255, 255, 255, 0.12); + --color-text: #d4d4d8; + --color-text-bright: #f0f0f2; + --color-text-muted: #3e3e46; + --color-accent: #8a8a96; + --color-accent-hover: #c0c0c8; + --color-danger: #8a4a48; + --color-success: #4a7a5e; + + --font-mono: 'IBM Plex Mono', monospace; + + --radius: 2px; + --space-xs: 4px; + --space-sm: 8px; + --space-md: 16px; + --space-lg: 24px; + --space-xl: 48px; + --space-2xl: 80px; + + --ease: cubic-bezier(0.16, 1, 0.3, 1); + --dur: 0.2s; +} + +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: var(--font-mono); + font-size: 0.8125rem; + background: var(--color-bg); + color: var(--color-text); + line-height: 1.55; + -webkit-font-smoothing: antialiased; + overflow-x: hidden; +} + +/* Grain */ +body::before { + content: ''; + position: fixed; + inset: 0; + z-index: 9999; + pointer-events: none; + opacity: 0.04; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + background-repeat: repeat; + background-size: 256px; +} + +/* === Typography === */ + +h1, h2, h3 { + font-family: var(--font-mono); + font-weight: 400; + line-height: 1.2; + color: var(--color-text-bright); + text-transform: uppercase; +} + +h1 { font-size: 1.375rem; letter-spacing: 0.06em; } +h2 { font-size: 0.9375rem; letter-spacing: 0.05em; } +h3 { font-size: 0.8125rem; letter-spacing: 0.04em; } + +p { + color: var(--color-text-muted); + font-size: 0.8125rem; +} + +code, .mono { + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--color-text-muted); +} + +.label { + font-family: var(--font-mono); + font-size: 0.5625rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.18em; + color: var(--color-text-muted); +} + +.label-inv { + display: inline-block; + font-family: var(--font-mono); + font-size: 0.5625rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.14em; + color: var(--color-bg); + background: var(--color-text); + padding: 2px 8px 1px; +} + +/* === Crosshair === */ + +.crosshair { + position: relative; + width: 10px; + height: 10px; + flex-shrink: 0; +} +.crosshair::before, +.crosshair::after { + content: ''; + position: absolute; + background: var(--color-text-muted); +} +.crosshair::before { + width: 1px; + height: 100%; + left: 50%; +} +.crosshair::after { + width: 100%; + height: 1px; + top: 50%; +} + +/* === Buttons === */ + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-sm); + padding: 7px 16px; + font-family: var(--font-mono); + font-size: 0.625rem; + font-weight: 500; + letter-spacing: 0.1em; + text-transform: uppercase; + line-height: 1; + background: transparent; + border: 1px solid var(--color-border-strong); + border-radius: 0; + cursor: pointer; + color: var(--color-text); + transition: + background var(--dur) var(--ease), + color var(--dur) var(--ease), + border-color var(--dur) var(--ease); +} +.btn:active { opacity: 0.8; } + +.btn-primary { + border-color: var(--color-text); + color: var(--color-text-bright); +} +.btn-primary:hover { + background: var(--color-text-bright); + color: var(--color-bg); +} + +.btn-secondary { + border-color: var(--color-border-strong); + color: var(--color-text); +} +.btn-secondary:hover { border-color: var(--color-text-muted); } + +.btn-ghost { + border-color: transparent; + color: var(--color-text-muted); +} +.btn-ghost:hover { + color: var(--color-text); + border-color: var(--color-border); +} + +.btn-danger { + border-color: var(--color-danger); + color: var(--color-danger); +} +.btn-danger:hover { + background: var(--color-danger); + color: var(--color-text-bright); +} + +.btn-sm { padding: 5px 10px; font-size: 0.5625rem; } + +/* === Inputs === */ + +.input { + width: 100%; + padding: 8px 12px; + font-family: var(--font-mono); + font-size: 0.75rem; + letter-spacing: 0.02em; + color: var(--color-text); + background: var(--color-surface); + border: 1px solid var(--color-border-strong); + border-radius: 0; + outline: none; + transition: border-color var(--dur) var(--ease); +} +.input::placeholder { color: var(--color-text-muted); } +.input:focus { border-color: var(--color-text); } + +select.input { + appearance: none; + cursor: pointer; + background-image: url("data:image/svg+xml,%3Csvg width='8' height='5' viewBox='0 0 8 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L4 4L7 1' stroke='%233e3e46' stroke-width='1' stroke-linecap='square'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 12px center; + padding-right: 32px; +} + +/* === Badge === */ + +.badge { + display: inline-flex; + align-items: center; + padding: 2px 8px; + font-family: var(--font-mono); + font-size: 0.5rem; + font-weight: 500; + letter-spacing: 0.12em; + text-transform: uppercase; + border-radius: 0; + background: transparent; + color: var(--color-text-muted); + border: 1px solid var(--color-border-strong); +} +.badge-accent { + color: var(--color-text-bright); + border-color: var(--color-text); + background: rgba(255, 255, 255, 0.04); +} + +/* === Card === */ + +.card { + background: var(--color-surface); + border: 1px solid var(--color-border-strong); + border-radius: 0; + padding: var(--space-lg); + transition: border-color var(--dur) var(--ease); +} +.card:hover { border-color: rgba(255, 255, 255, 0.2); } + +/* === Vertical text === */ + +.vertical-text { + writing-mode: vertical-rl; + text-orientation: mixed; + font-family: var(--font-mono); + font-size: 0.625rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.1); +} + +/* === Utilities === */ + +.flex { display: flex; } +.flex-col { flex-direction: column; } +.gap-xs { gap: var(--space-xs); } +.gap-sm { gap: var(--space-sm); } +.gap-md { gap: var(--space-md); } +.gap-lg { gap: var(--space-lg); } +.items-center { align-items: center; } +.wrap { flex-wrap: wrap; }