# PromptScript vs Manual Configuration

## The Manual Approach

Without PromptScript, teams maintain separate configuration files for each AI tool in every repository. Even with just 2-3 tools, this quickly becomes unmanageable across many repos:

::::tabs
:::tab[Files to maintain (per repo)]

```
.github/copilot-instructions.md   # GitHub Copilot
CLAUDE.md                          # Claude Code
.cursor/rules/project.mdc         # Cursor
AGENTS.md                          # Codex / Factory AI
GEMINI.md                          # Gemini CLI
... one file per tool
```

:::
:::tab[Problems]

| Problem                       | Impact                                                          |
| ----------------------------- | --------------------------------------------------------------- |
| **No single source of truth** | Instructions drift between tools                                |
| **No validation**             | Errors go undetected until runtime                              |
| **No inheritance**            | Copy-paste across repos                                         |
| **No audit trail**            | Who changed what and when?                                      |
| **Manual updates**            | One policy change = PRs in every repo, for every tool           |
| **Vendor lock-in**            | Switching tools means rewriting instructions, READMEs, and docs |
| :::                           |
| ::::                          |

## The PromptScript Approach

With PromptScript, you write one `.prs` file and compile to all 50 coding agent targets:

::::tabs
:::tab[Single source file]

```promptscript
@meta { id: "my-project" syntax: "1.5.0" }

@inherit @company/backend-standards

@identity {
  """
  You are an expert developer working on the API service.
  """
}

@standards {
  code: { languages: ["TypeScript"], testing: ["Vitest"] }
}

@restrictions {
  - "Never expose API keys"
  - "Always validate input"
}
```

<!-- playground-link-start -->
<a href="https://getpromptscript.dev/playground/?s=N4IgZglgNgpgziAXAbVABwIYBcAWSQwAeGAtmrAHRoBOCANCAMYD2AdljO-gAIkxYYABMEEQAJokEAdECQCeAWhrMAVjEZYZguHPYZCkmQEYKAVgoAGLQF8prO9wiscMahCyDuLMhlZyA9ABGGIwA1pxiCnACrGIY1GJwdg7inFjucsJ2gtIgMvmsOQCazACugvEwFYVEaK4eYjAAbjBQzHXUggDuzNShTgDmgmyCuFUAggAKAJLark0QjDAU2bn5eay29qzc0b5xCXBZhYIsjZIiUL4DpRgD8JLIMgAqcnUAyoxuaJogALp0UbwdKsAaPGQANXcwJkf0EWy2DmowLcGggbCOwFWClyADlmq5BLVmHAJjNBOE5EkNjkcTJxlAuhgqYImhgoOJsFUnGhSr87NYQNY6OhsHhECAvMwfH4giFwrEojEDokqLQQAwWOw0vgAMSCd6lNDkCAwMTaZijFxE4hkWCCailVhHFzIiiCXHMDyYageZhgK1VMTMRilPh6dJsQH7QSsL0VB0wdmCTBhO7LBx8ATHHLiQyS7yYWXBMIRJX7eKJAo5HR6Ay5EwANks1cEJAghCckiwjpgAoce1ilcxqzOMHBIEmVyWOGYUEanUHKthqw40UGE6nIRgs-nhKXlZXmyRKMWkedOcEdMn053c4XieiqPPBUF1gBBHY1Dk+CIpHIyw0PQIAtLQ6KsPgRhCkAA" target="_blank" rel="noopener noreferrer">
  <img src="https://img.shields.io/badge/Try_in-Playground-blue?style=flat-square" alt="Try in Playground" />
</a>
<!-- playground-link-end -->

:::
::::

::::tabs
:::tab[One command]

```bash
prs compile
```

Generates all output files automatically:

```
.github/copilot-instructions.md
CLAUDE.md
.cursor/rules/project.mdc
.windsurf/rules/project.md
.clinerules
AGENTS.md
GEMINI.md
... all configured targets
```

:::
:::tab[Benefits]

| Benefit                      | How                                                               |
| ---------------------------- | ----------------------------------------------------------------- |
| **Single source of truth**   | One `.prs` file, up to 50 coding agent outputs                    |
| **Compile-time validation**  | Errors caught before deployment                                   |
| **Hierarchical inheritance** | Org → Team → Project                                              |
| **Full audit trail**         | Git history on `.prs` files                                       |
| **Controlled updates**       | Change registry, then run `prs update` and recompile in each repo |
| **Tool-agnostic**            | Switch tools without rewriting                                    |
| :::                          |
| ::::                         |

## Side-by-Side Comparison

| Aspect          | Manual                | PromptScript                                  |
| --------------- | --------------------- | --------------------------------------------- |
| Files per repo  | 5-50                  | 2 source files plus generated outputs         |
| Update a policy | 100+ manual edits     | Registry update, dependency update, recompile |
| Add new tool    | Write new file format | `prs compile`                                 |
| Validation      | None                  | Compile-time + CI/CD                          |
| Inheritance     | Copy-paste            | `@inherit` / `@use`                           |
| Consistency     | Hope for the best     | Validated in CI                               |
| Onboarding time | Hours per tool        | Minutes                                       |

## Getting Started

Ready to switch? See the [Migration Guide](https://getpromptscript.dev/guides/migration/index.md) to convert existing configs, or start fresh with the [Getting Started guide](https://getpromptscript.dev/getting-started/index.md).

Evaluating for a team or organization? Also see:

- [Target Platform Matrix](https://getpromptscript.dev/reference/formatters/index.md) - exact output paths per tool
- [CI/CD Integration](https://getpromptscript.dev/guides/ci/index.md) - validation and drift detection in your pipeline
- [Enterprise Setup](https://getpromptscript.dev/guides/enterprise/index.md) - registry, policies, and governance across repositories