# Authoring Global Scripts

> Authors and manages global package scripts using the _: prefix convention. Scripts defined in root package.json are propagated to all packages with the prefix stripped.

- Skill: `majiayu000/authoring-global-scripts` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/authoring-global-scripts`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/authoring-global-scripts/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/authoring-global-scripts

---


---
name: authoring-global-scripts
description: Authors and manages global package scripts using the _: prefix convention. Scripts defined in root package.json are propagated to all packages with the prefix stripped.
---

# Authoring Global Scripts

Manage package scripts that apply to all packages in the monorepo.

## Steps

### Adding a Global Script

1. Add script to root `package.json` with `_:` prefix:
   ```json
   {
     "scripts": {
       "_:build": "tsgo -p tsconfig.build.json",
       "_:check:types": "tsgo --noEmit"
     }
   }
   ```

2. Run the sync script at `.claude/skills/authoring-global-scripts/scripts/sync-package-scripts.ts`

### Auditing for Inconsistencies

Run with `--check` flag to verify all packages are in sync without modifying:
```
tsx .claude/skills/authoring-global-scripts/scripts/sync-package-scripts.ts --check
```

## Reference

### Convention

| Location | Format | Example |
|----------|--------|---------|
| Root package.json | `_:script-name` | `"_:build": "tsgo -p tsconfig.build.json"` |
| Package package.json | `script-name` | `"build": "tsgo -p tsconfig.build.json"` |

The `_:` prefix marks scripts as "global templates". The sync script:
- Strips the prefix when copying to packages
- Replaces all package scripts (packages should not have custom scripts)
- Warns about extra scripts in packages that aren't in the template

### Relative Paths

Relative paths like `../../oxlint.json` are preserved as-is. They're relative from each package directory, so `../../` correctly points to the monorepo root from `packages/*/`.

## Notes

- Packages should NOT have custom scripts - all scripts come from the global template
- If a package needs a unique script, reconsider whether it belongs as a global script
- Run audit (`--check`) to catch manual edits that broke the pattern

