Install
$ agentstack add skill-darkroomengineering-cc-settings-component ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Create Darkroom Component
Create a React component following Darkroom conventions. Detect the stack first — satus (Next.js) and novus (React Router) have different conventions for client/server boundaries, image/link wrappers, and path aliases.
Step 1 — Detect stack
Read package.json:
dependencies.nextpresent → Next.js / satus conventionsdependencies["react-router"]ordevDependencies["@react-router/dev"]→ React Router / novus conventions- Neither → ask user, or assume satus if unclear
Step 2 — Resolve target paths
| Stack | Component path | CSS module path | Image wrapper | Link wrapper | Path alias | |---|---|---|---|---|---| | satus (Next.js) | components//index.tsx | components//.module.css | import { Image } from '@/components/image' | import { Link } from '@/components/link' | @/ | | novus (React Router) | components//index.tsx | components//.module.css | Native ` (or project's wrapper if it exists) | import { Link } from 'react-router' | ~/` |
Step 3 — Emit template
satus / Next.js
// components//index.tsx
// 'use client' — only add if component needs:
// - useState, useEffect, or other hooks
// - Event handlers (onClick, onChange, etc.)
// - Browser APIs (window, document, etc.)
import s from './.module.css'
interface Props {
children?: React.ReactNode
className?: string
}
export function ({ children, className }: Props) {
return (
} ${className ?? ''}`}>
{children}
)
}
novus / React Router
// components//index.tsx
// React Router components are isomorphic — no directive needed.
// They run on server during SSR and on client after hydration.
import s from './.module.css'
interface Props {
children?: React.ReactNode
className?: string
}
export function ({ children, className }: Props) {
return (
} ${className ?? ''}`}>
{children}
)
}
CSS module (both stacks)
. {
/* Component styles */
}
Before you start
If this component wraps or uses an external library (Radix, Framer Motion, GSAP, etc.):
- Fetch docs first — use Context7 MCP (
mcp__context7__resolve-library-id→get-library-docs) for the current API. - Check version — run
bun infobefore installing.
Never implement against external library APIs from memory.
Conventions (both stacks)
- CSS Module as
s— always import assfor consistency. - Props interface — define explicitly, include
classNamefor composition. - Named export — use
export function, notexport default. - No memoization — React Compiler handles it.
Conventions (satus only)
- Server Component by default — only add
'use client'if needed. - Image wrapper —
import { Image } from '@/components/image'. - Link wrapper —
import { Link } from '@/components/link'.
Conventions (novus only)
- Components are isomorphic — no
'use client'directive. - Path alias is
~/, not@/. - Link —
import { Link } from 'react-router'(declarative routing). - Images — native `
with explicitwidth/height/fetchPriority`. No project-level wrapper unless the project added one.
Arguments
$ARGUMENTS— Component name (e.g., "Button", "Header")--clientflag (Next.js only) — Force client component
Example
User: "create a Button component"
→ detect stack → satus → creates components/button/index.tsx + button.module.css with @/-aliased imports
User: "create a Button component" (in novus repo)
→ detect stack → novus → creates same files but with ~/-aliased imports and no 'use client' directive
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: darkroomengineering
- Source: darkroomengineering/cc-settings
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.