This file provides guidance to AI coding agents working with code in this repository.
A collection of Agent Skills for the Rspack ecosystem (Rspack, Rsbuild, Rslib, Rstest, Rsdoctor). Skills are packaged instructions and scripts that extend agent capabilities for debugging, profiling, and development workflows.
agent-skills/
├── skills/ # Skills directory, contains all Skills
├── packages/ # Source code projects for complex scripts
├── scripts/ # Project-level configurations and tools
│ └── config/ # Common configurations (rslib, tsconfig, etc.)
├── biome.json # Biome code formatting configuration
├── pnpm-workspace.yaml # pnpm workspace configuration
├── pnpm-lock.yaml # Dependency lock file
├── package.json # Project configuration file
└── README.md # Project documentation
- skills/: Contains all Skills, each Skill is an independent folder
- Each Skill includes
SKILL.md(required),scripts/(optional),references/(optional),assets/(optional)
- Each Skill includes
- packages/: Contains source code for complex scripts that need compilation
- Corresponds to Skills with the same name in the skills directory
- Compiled by Rslib and output to the corresponding
skills/{skill-name}/scripts/directory
- scripts/config/: Contains project-level common configurations
rslib.config.ts: Rslib base configurationtsconfig.json: TypeScript base configuration
Execute in the skills/ directory:
cd skills
npx skills init my-skillThis will generate a SKILL.md file with YAML front-matter and Markdown content.
Configure in the YAML front-matter at the top of the SKILL.md file:
---
name: my-skill
description: Feature description and trigger scenarios, which is key for Agents to determine whether to use this Skill
---Field Descriptions:
-
name (required)
- Unique identifier for the Skill
- Maximum 64 characters
- Only lowercase letters, numbers, and hyphens
- Must not start or end with a hyphen
- Example:
rspack-tracing
-
description (required)
- Feature description and trigger scenarios
- Maximum 1024 characters
- Recommended to include trigger keywords, such as "when user encounters segmentation fault in Rspack"
Standard Skill structure:
my-skill/
├── SKILL.md # Required: instructions + metadata
├── scripts/ # Optional: executable scripts
├── references/ # Optional: reference documentation
└── assets/ # Optional: templates, resource files
Write in SKILL.md:
- Use Cases: Explain when to use this Skill
- Workflow: Detailed operation steps
- Code Examples: Provide code examples
- Reference Documentation: Link to detailed documentation in the
references/directory
For simple scripts (such as single-file scripts), create them directly in the skills/{skill-name}/scripts/ directory.
Example:
// skills/my-skill/scripts/simple.js
console.log('Hello from simple script');For complex scenarios requiring dependencies, TypeScript, etc.:
packages/my-skill/
├── package.json
├── rslib.config.ts
├── tsconfig.json
└── src/
└── index.ts
{
"name": "@rstackjs/my-skill",
"version": "0.0.0",
"type": "module",
"scripts": {
"build": "rslib build",
"test": "rstest"
},
"dependencies": {
// Your dependencies
}
}import { basename, join } from 'node:path';
import { defineConfig } from '@rslib/core';
import { baseConfig } from '@rstackjs/config/rslib.config.ts';
const pkgName = basename(import.meta.dirname);
export default defineConfig({
lib: [
{
...baseConfig,
output: {
distPath: join(import.meta.dirname, `../../skills/${pkgName}/scripts`),
},
},
],
});{
"extends": "@rstackjs/config/tsconfig",
"compilerOptions": {},
"include": ["src"]
}Write code in src/index.ts:
export function myFunction() {
// Your logic
}cd packages/my-skill
pnpm buildAfter building, the bundled files will be automatically output to the skills/my-skill/scripts/ directory.
Write tests using Rstest:
// packages/my-skill/src/index.test.ts
import { describe, it, expect } from '@rstest/core';
import { myFunction } from './index';
describe('myFunction', () => {
it('should work correctly', () => {
expect(myFunction()).toBe(expected);
});
});Run tests:
pnpm testInstall a specific Skill:
npx skills add rstackjs/agent-skills --skill my-skill