Buzzform
buildnbuzz/buzzform
A skill your agent uses when working with BuzzForm schema-driven forms, @buildnbuzz/form-core, @buildnbuzz/form-react, or any related APIs like defineSchema, InferType, FormProvider, useDataField…
End-to-end form handling with react-hook-form, Zod schemas, validation patterns, error messaging, field arrays, and multi-step wizards.
$ npx skills add curiositech/some_claude_skills --skill form-validation-architect -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install curiositech/some_claude_skills form-validation-architect --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/form-validation-architect .claude/skills/form-validation-architect && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "form-validation-architect" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architect into .claude/skills/form-validation-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "form-validation-architect", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add curiositech/some_claude_skills --skill form-validation-architect -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install curiositech/some_claude_skills form-validation-architect --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/form-validation-architect .agents/skills/form-validation-architect && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "form-validation-architect" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architect into .agents/skills/form-validation-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "form-validation-architect", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add curiositech/some_claude_skills --skill form-validation-architect -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install curiositech/some_claude_skills form-validation-architect --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/form-validation-architect .cursor/skills/form-validation-architect && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "form-validation-architect" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architect into .cursor/skills/form-validation-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "form-validation-architect", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/curiositech/some_claude_skills.git --path .claude/skills/form-validation-architect--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add curiositech/some_claude_skills --skill form-validation-architect -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install curiositech/some_claude_skills form-validation-architect --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/form-validation-architect .gemini/skills/form-validation-architect && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "form-validation-architect" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architect into .gemini/skills/form-validation-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "form-validation-architect", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install curiositech/some_claude_skills form-validation-architectInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add curiositech/some_claude_skills --skill form-validation-architect -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/form-validation-architect .github/skills/form-validation-architect && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "form-validation-architect" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architect into .github/skills/form-validation-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "form-validation-architect", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add curiositech/some_claude_skills --skill form-validation-architect -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install curiositech/some_claude_skills form-validation-architect --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/form-validation-architect .opencode/skills/form-validation-architect && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "form-validation-architect" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/form-validation-architect into .opencode/skills/form-validation-architect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "form-validation-architect", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
form-validation-architectEnd-to-end form handling with react-hook-form, Zod schemas, validation patterns, error messaging, field arrays, and multi-step wizards.
Form Validation Architect is an agent skill from curiositech/some_claude_skills. End-to-end form handling with react-hook-form, Zod schemas, validation patterns, error messaging, field arrays, and multi-step wizards. Use for complex forms, validation architecture, autosave, field dependencies. Activate on "form validation", "react-hook-form", "Zod", "form error", "multi-step form", "wizard". NOT for simple HTML forms, backend validation only, or non-React frameworks.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts, reference files and assets (for example `.claude-plugin/plugin.json`, `references/accessibility.md` and `references/file-upload.md`).
It sits in Frontend & Design, covering Forms and validation. It works with Zod and React. The repository describes itself as: Claude skills that make my life easier. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6713fc7. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(npm:*)From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (TypeScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Form Validation Architect loads about 3.8k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 104 tokens; SKILL.md has 490 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from curiositech/some_claude_skills at commit 6713fc7, republished under its MIT licence (© curiositech). 490 words, ~3,773 tokens.
.claude/skills/form-validation-architect/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Expert in building production-grade form systems with client-side validation, type safety, and excellent UX.
✅ Use for:
❌ NOT for:
Does your form:
├── Have >5 fields? → Use react-hook-form
├── Need type safety? → Add Zod schemas
├── Have dynamic fields? → Use field arrays
├── Span multiple steps? → Use wizard pattern
├── Need async validation? → Use resolver + async rules
└── Just email/message? → Use native HTML validationWhy RHF over Formik:
Timeline:
Why Zod over Yup:
Timeline:
Novice thinking: "All form inputs should be controlled with useState"
Problem: Causes re-render on every keystroke
Wrong approach:
// ❌ Re-renders entire component on every keystroke
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [name, setName] = useState('');
// ... 20 more useState calls
<input value={email} onChange={(e) => setEmail(e.target.value)} />Correct approach:
// ✅ Uncontrolled with react-hook-form (minimal re-renders)
const { register, handleSubmit } = useForm();
<input {...register('email')} />
<input {...register('password')} />
<input {...register('name')} />Why it matters: Forms with 10+ fields become sluggish with controlled inputs.
Problem: No type safety, easy to make mistakes
Wrong approach:
// ❌ String validation, no types
const validate = (values) => {
if (!values.email.includes('@')) return 'Invalid email';
if (values.age < 18) return 'Must be 18+';
// Typo in field name? Runtime error!
};Correct approach:
// ✅ Zod schema with type inference
const schema = z.object({
email: z.string().email('Invalid email'),
age: z.number().min(18, 'Must be 18+'),
username: z.string()
.min(3, 'Too short')
.regex(/^[a-z0-9_]+$/, 'Lowercase, numbers, underscores only')
});
type FormData = z.infer<typeof schema>; // Automatic TypeScript type!Timeline:
Problem: Errors shown before user interacts
Wrong approach:
// ❌ Shows errors immediately on page load
{errors.email && <span>{errors.email}</span>}Correct approach:
// ✅ Show errors only after field is touched
const { formState: { errors, touchedFields } } = useForm();
{touchedFields.email && errors.email && (
<span className="error">{errors.email.message}</span>
)}
// Or: Use mode="onBlur" to validate on blur
const form = useForm({
mode: 'onBlur' // Validate when user leaves field
});Why it matters: Better UX → user isn't yelled at before typing
Problem: Can't check username availability, validate addresses, etc.
Correct approach:
// ✅ Async validation with debounce
const schema = z.object({
username: z.string().refine(
async (username) => {
// Debounced API call
const available = await checkUsernameAvailability(username);
return available;
},
{ message: 'Username already taken' }
)
});
// Or: Custom async validation in RHF
register('username', {
validate: {
checkAvailable: async (value) => {
const response = await fetch(`/api/check-username?q=${value}`);
return response.ok || 'Username taken';
}
}
});Best practice: Debounce async validation to avoid API spam
Problem: User doesn't know validation is happening
Correct approach:
// ✅ Show loading state during async validation
const { formState: { isValidating, isSubmitting } } = useForm();
<button disabled={isValidating || isSubmitting}>
{isSubmitting ? 'Submitting...' :
isValidating ? 'Checking...' :
'Submit'}
</button>import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';
// Define schema
const loginSchema = z.object({
email: z.string().email('Invalid email address'),
password: z.string().min(8, 'Password must be at least 8 characters'),
rememberMe: z.boolean().optional()
});
type LoginForm = z.infer<typeof loginSchema>;
function LoginForm() {
const {
register,
handleSubmit,
formState: { errors, isSubmitting }
} = useForm<LoginForm>({
resolver: zodResolver(loginSchema),
defaultValues: {
rememberMe: false
}
});
const onSubmit = async (data: LoginForm) => {
await api.login(data);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<div>
<input
{...register('email')}
type="email"
placeholder="Email"
/>
{errors.email && <span className="error">{errors.email.message}</span>}
</div>
<div>
<input
{...register('password')}
type="password"
placeholder="Password"
/>
{errors.password && <span className="error">{errors.password.message}</span>}
</div>
<div>
<label>
<input {...register('rememberMe')} type="checkbox" />
Remember me
</label>
</div>
<button type="submit" disabled={isSubmitting}>
{isSubmitting ? 'Logging in...' : 'Login'}
</button>
</form>
);
}const stepSchemas = [
// Step 1: Personal Info
z.object({
firstName: z.string().min(1, 'Required'),
lastName: z.string().min(1, 'Required'),
email: z.string().email()
}),
// Step 2: Address
z.object({
street: z.string().min(1, 'Required'),
city: z.string().min(1, 'Required'),
zipCode: z.string().regex(/^\d{5}$/, 'Invalid ZIP')
}),
// Step 3: Payment
z.object({
cardNumber: z.string().regex(/^\d{16}$/, 'Invalid card'),
expiry: z.string().regex(/^\d{2}\/\d{2}$/, 'MM/YY format'),
cvv: z.string().regex(/^\d{3}$/, '3 digits')
})
];
function MultiStepForm() {
const [step, setStep] = useState(0);
const [formData, setFormData] = useState({});
const form = useForm({
resolver: zodResolver(stepSchemas[step])
});
const nextStep = async () => {
const isValid = await form.trigger(); // Validate current step
if (isValid) {
setFormData({ ...formData, ...form.getValues() });
setStep(step + 1);
}
};
const prevStep = () => {
setFormData({ ...formData, ...form.getValues() });
setStep(step - 1);
};
const onSubmit = async (data) => {
const finalData = { ...formData, ...data };
await api.submitApplication(finalData);
};
return (
<div>
<progress value={step + 1} max={stepSchemas.length} />
<form onSubmit={form.handleSubmit(step === 2 ? onSubmit : nextStep)}>
{step === 0 && <PersonalInfoStep register={form.register} errors={form.formState.errors} />}
{step === 1 && <AddressStep register={form.register} errors={form.formState.errors} />}
{step === 2 && <PaymentStep register={form.register} errors={form.formState.errors} />}
<div>
{step > 0 && <button type="button" onClick={prevStep}>Back</button>}
<button type="submit">
{step === 2 ? 'Submit' : 'Next'}
</button>
</div>
</form>
</div>
);
}const schema = z.object({
items: z.array(z.object({
name: z.string().min(1, 'Required'),
quantity: z.number().min(1, 'At least 1'),
price: z.number().min(0, 'Must be positive')
})).min(1, 'Add at least one item')
});
function OrderForm() {
const { register, control, handleSubmit, formState: { errors } } = useForm({
resolver: zodResolver(schema),
defaultValues: {
items: [{ name: '', quantity: 1, price: 0 }]
}
});
const { fields, append, remove } = useFieldArray({
control,
name: 'items'
});
return (
<form onSubmit={handleSubmit(onSubmit)}>
{fields.map((field, index) => (
<div key={field.id}>
<input
{...register(`items.${index}.name`)}
placeholder="Item name"
/>
<input
{...register(`items.${index}.quantity`, { valueAsNumber: true })}
type="number"
/>
<input
{...register(`items.${index}.price`, { valueAsNumber: true })}
type="number"
step="0.01"
/>
<button type="button" onClick={() => remove(index)}>
Remove
</button>
</div>
))}
<button type="button" onClick={() => append({ name: '', quantity: 1, price: 0 })}>
Add Item
</button>
<button type="submit">Submit Order</button>
</form>
);
}import { useDebounce } from 'use-debounce';
import { useEffect } from 'react';
function AutosaveForm() {
const { watch, register } = useForm();
const formValues = watch(); // Watch all fields
// Debounce to avoid saving on every keystroke
const [debouncedValues] = useDebounce(formValues, 1000);
useEffect(() => {
// Save to localStorage or API
localStorage.setItem('draft', JSON.stringify(debouncedValues));
// Or: await api.saveDraft(debouncedValues);
}, [debouncedValues]);
return (
<form>
<input {...register('title')} placeholder="Title" />
<textarea {...register('content')} placeholder="Content" />
<small>Autosaved</small>
</form>
);
}const form = useForm({
mode: 'onBlur' // Validate when user leaves field
// NOT 'onChange' - too aggressive
});<button
type="submit"
disabled={!form.formState.isValid || form.formState.isSubmitting}
>
Submit
</button>const onSubmit = async (data) => {
try {
await api.submit(data);
} catch (error) {
// Focus first error field
const firstError = Object.keys(errors)[0];
form.setFocus(firstError);
}
};const onSubmit = async (data) => {
// Optimistically update UI
setItems([...items, data]);
try {
await api.createItem(data);
} catch (error) {
// Rollback on error
setItems(items);
toast.error('Failed to save');
}
};□ Zod schemas for all forms
□ Type inference used (z.infer<typeof schema>)
□ Validation mode set appropriately (onBlur/onSubmit)
□ Error messages clear and actionable
□ Loading states for async operations
□ Focus management on errors
□ Autosave for long forms
□ Form state persisted (localStorage/session)
□ File upload progress indicators
□ Keyboard navigation tested
□ Accessibility (ARIA labels, error announcements)
□ Mobile-friendly (large touch targets)| Scenario | Use This Skill? |
|---|---|
| User registration with validation | ✅ Yes |
| Multi-step checkout flow | ✅ Yes |
| Dynamic form builder | ✅ Yes |
| Simple newsletter signup | ❌ No - use native HTML |
| Backend-only validation | ❌ No - use Joi/Yup on server |
| Non-React framework | ❌ No - use framework-specific solution |
| Feature | RHF + Zod | Formik + Yup | Native HTML5 |
|---|---|---|---|
| Performance | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Type Safety | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ❌ |
| Bundle Size | 8KB | 30KB | 0KB |
| DevEx | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| Field Arrays | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ❌ |
| Async Validation | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ❌ |
/references/zod-patterns.md - Advanced Zod schema patterns/references/accessibility.md - Form accessibility guidelines/references/file-upload.md - File upload with progress trackingscripts/generate_form.ts - Generate form from Zod schemascripts/validate_schemas.ts - Lint Zod schemas for common issuesassets/form-templates/ - Ready-to-use form componentsThis skill guides: Form validation architecture | react-hook-form patterns | Zod schema design | Multi-step wizards | Field arrays | Autosave | Async validation
© curiositech, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 9 other files (scripts, references, assets) in .claude/skills/form-validation-architect of curiositech/some_claude_skills.
Open the folder on GitHubat commit 6713fc7
Form Validation Architect next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Form Validation Architect this skillcuriositech/some_claude_skills | 243 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Buzzformbuildnbuzz/buzzform | 102 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Opik Frontend Patternscomet-ml/opik | 22k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Frontend Patterns Templatebybren-llc/safe-agentic-workflow | 423 | — | ~2k | Automated safety check: Pass | MIT | |
| React Hook Form Zodsecondsky/claude-skills | 227 | — | ~4.8k | Automated safety check: Pass | MIT | |
| JSON Render Catalogyonatangross/orchestkit | 290 | — | ~6.4k | Automated safety check: Pass | MIT |
buildnbuzz/buzzform
A skill your agent uses when working with BuzzForm schema-driven forms, @buildnbuzz/form-core, @buildnbuzz/form-react, or any related APIs like defineSchema, InferType, FormProvider, useDataField…
comet-ml/opik
Sets the conventions for the Opik React frontend: TanStack Query for data, Zustand for shared state, one-way layer imports and a fix for Google Translate crashes.
bybren-llc/safe-agentic-workflow
Frontend patterns for modern web frameworks, component libraries, auth flows, and analytics. Use when building UI components, creating pages, implementing…
secondsky/claude-skills
Type-safe React forms with React Hook Form and Zod validation.
yonatangross/orchestkit
json-render component catalog patterns for AI-safe generative UI.
MadAppGang/claude-code
Modern React 19+ patterns with TypeScript including function components, hooks, state management, TanStack Query integration, form handling with Zod, error boundaries, and performance optimization.
curiositech/some_claude_skills
Detect crisis signals in user content using NLP, mental health sentiment analysis, and safe intervention protocols.
curiositech/some_claude_skills
Build production CI/CD pipelines with GitHub Actions. An agent skill from curiositech/some_claude_skills.
curiositech/some_claude_skills
Expert in background job processing with Bull/BullMQ (Redis), Celery, and cloud queues.
curiositech/some_claude_skills
Strategic analyst that maps competitive landscapes, identifies white space opportunities, and provides positioning recommendations.
curiositech/some_claude_skills
Build production computer vision pipelines for object detection, tracking, and video analysis.
curiositech/some_claude_skills
Long-running design anthropologist that builds comprehensive visual databases from 500-1000 real-world examples, extracting color palettes, typography patterns, layout systems, and interaction…
Categories
End-to-end form handling with react-hook-form, Zod schemas, validation patterns, error messaging, field arrays, and multi-step wizards. Form Validation Architect is an agent skill from curiositech/some_claude_skills. End-to-end form handling with react-hook-form, Zod schemas, validation patterns, error messaging, field arrays, and multi-step wizards.
Form Validation Architect fits situations like: validation architecture; field dependencies.
Run `npx skills add curiositech/some_claude_skills --skill form-validation-architect -a claude-code`. Or copy the skill folder (.claude/skills/form-validation-architect in curiositech/some_claude_skills) into .claude/skills/form-validation-architect in your project. Claude Code loads it when a task matches its description.
Run `npx skills add curiositech/some_claude_skills --skill form-validation-architect -a codex`. Or copy the skill folder (.claude/skills/form-validation-architect in curiositech/some_claude_skills) into .agents/skills/form-validation-architect in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add curiositech/some_claude_skills --skill form-validation-architect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/form-validation-architect, .gemini/skills/form-validation-architect, .github/skills/form-validation-architect and .opencode/skills/form-validation-architect in your project.
Going by SKILL.md and its folder, Form Validation Architect needs TypeScript for the scripts in its folder. Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(npm:*).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Form Validation Architect is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Form Validation Architect: Buzzform (buildnbuzz/buzzform, 102 stars), Opik Frontend Patterns (comet-ml/opik, 22k stars), Frontend Patterns Template (bybren-llc/safe-agentic-workflow, 423 stars) and React Hook Form Zod (secondsky/claude-skills, 227 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
curiositech (a GitHub organization) maintains it in curiositech/some_claude_skills, which has 243 GitHub stars. The repository holds 95 skills in this directory. The repository was last updated on September 6, 2026.
Source: curiositech/some_claude_skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.