component-library
About
This skill conditionally installs the specified GitHub Packages component library at its latest version when `include_component_library` is set to "yes". It automatically adds the dependency to package.json during the project setup phase. The skill is skipped entirely if the configuration flag is set to "no".
Quick Install
Claude Code
Recommended/plugin add https://github.com/majiayu000/claude-skill-registrygit clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/component-libraryCopy and paste this command in Claude Code to install this skill
Documentation
Component Library Installation Skill
Purpose
Add and configure the component library dependency in package.json when user requests it.
Execution Context: This skill runs as a separate step (Phase 1, Step 4) after package.json is generated.
⚠️ CONDITIONAL SKILL - READ CAREFULLY
Execute this skill ONLY if: include_component_library: yes
If include_component_library: no:
- SKIP this skill entirely
- Move to next skill
Input Parameters
From configuration:
include_component_library- Boolean flag (yesorno)component_library- Name of the component library package (default:@RoyalAholdDelhaize/pdl-spectrum-component-library-web)component_library_version- Always fetch latest version from npm registry
Package.json Format
Important: The component library uses an npm alias format in package.json:
{
"dependencies": {
"@royalaholddelhaize/pdl-spectrum-component-library-web": "npm:@RoyalAholdDelhaize/pdl-spectrum-component-library-web@^{version}"
}
}
Why the alias?
- Key (lowercase):
@royalaholddelhaize/pdl-spectrum-component-library-web- npm convention for lowercase scopes - Value (original case):
npm:@RoyalAholdDelhaize/pdl-spectrum-component-library-web@^{version}- actual package name
Manual installation command:
npm install @RoyalAholdDelhaize/pdl-spectrum-component-library-web
npm automatically creates the alias format in package.json.
Key Rule
Component library dependency is added to package.json when: include_component_library: yes
If fetching latest version fails:
- Skip installation
- Inform user that GitHub token is missing
- Provide setup instructions
- Continue with project generation
Implementation Steps
⚠️ CRITICAL: Component library packages use npm show, NOT npm view
- Reason: GitHub Packages authentication works best with
npm show - All other packages use
npm view(see package-json skill)
Step 1: Conditional Check
// ONLY execute if user requested component library
if (userConfig.include_component_library !== 'yes') {
console.log('⏭️ Skipping component library - not requested');
return; // Exit this skill
}
Step 2: Read Existing package.json
const fs = require('fs');
const path = require('path');
// Read the generated package.json
const packageJsonPath = path.join(process.cwd(), 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
Step 3: Fetch Latest Version and Add to Dependencies
if (userConfig.include_component_library === 'yes') {
const { execSync } = require('child_process');
try {
// Fetch latest version from npm registry
// IMPORTANT: Component library packages MUST use 'npm show', not 'npm view'
// This is the standard for GitHub Packages authentication
// Note: Uses npm show without --registry flag to respect ~/.npmrc authentication
const latestVersion = execSync(
'npm show @RoyalAholdDelhaize/pdl-spectrum-component-library-web version',
{ encoding: 'utf-8' }
).trim();
userConfig.component_library_version = `^${latestVersion}`;
// Add to dependencies using npm alias format
// Key: lowercase scope (npm convention)
// Value: npm:{original case package}@{version}
const aliasKey = '@royalaholddelhaize/pdl-spectrum-component-library-web';
const aliasValue = `npm:@RoyalAholdDelhaize/pdl-spectrum-component-library-web@${userConfig.component_library_version}`;
// Add to package.json dependencies
packageJson.dependencies[aliasKey] = aliasValue;
// Write updated package.json
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
console.log(`✓ Component library configured: ${aliasKey} → ${aliasValue}`);
} catch (error) {
// If fetching version fails, inform user and skip installation
console.log('\n⚠️ GitHub token is missing. Skipping component library installation.');
console.log('📖 To install the component library later, configure a GitHub token:');
console.log(' https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-with-a-personal-access-token\n');
// Skip installation - do not add to dependencies
userConfig.include_component_library = 'no';
return;
}
}
Validation Checklist
- Verify
include_component_libraryflag checked before execution - Verify latest version fetched successfully before adding to package.json
- Verify user informed with setup instructions if fetch fails
- Verify component library added to package.json only when fetch succeeds
GitHub Repository
Related Skills
content-collections
MetaThis skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.
evaluating-llms-harness
TestingThis Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.
cloudflare-turnstile
MetaThis skill provides comprehensive guidance for implementing Cloudflare Turnstile as a CAPTCHA-alternative bot protection system. It covers integration for forms, login pages, API endpoints, and frameworks like React/Next.js/Hono, while handling invisible challenges that maintain user experience. Use it when migrating from reCAPTCHA, debugging error codes, or implementing token validation and E2E tests.
webapp-testing
TestingThis Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.
