# Scaffold Project

> Scaffolds a new Go project for managing Grafana resources as code via gcx dev scaffold. Use when the user wants to create a new Grafana resources-as-code project, start a new dashboards-as-code repo, scaffold a gcx project, or asks "how do I get started with gcx". Triggers on phrases like "new project", "scaffold", "bootstrap", "create project", "get started".

- Skill: `grafana/scaffold-project` (Agent Skill)
- Install (CLI): `npx skillmds@latest add grafana/scaffold-project`
- Raw SKILL.md: https://api.skillmd.com/api/skills/grafana/scaffold-project/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: grafana (https://skillmd.com/u/grafana)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/grafana/scaffold-project

---


# Scaffold a gcx Project

Scaffold a new Go project for managing Grafana resources as code using
`gcx dev scaffold`.

## Prerequisites

Verify gcx is installed:

```bash
gcx --version
```

If missing, see the `setup-gcx` skill.

## Scaffolding

### Interactive Mode (recommended for first-time users)

```bash
gcx dev scaffold
```

Prompts for:
- **Project name** - becomes the directory name (kebab-cased)
- **Go module path** - e.g. `github.com/myorg/my-dashboards`

### Non-Interactive Mode

```bash
gcx dev scaffold --project my-dashboards --go-module-path github.com/myorg/my-dashboards
```

## What Gets Generated

```
my-dashboards/
├── .github/workflows/deploy.yaml   # CI/CD workflow for gcx push
├── .gitignore
├── go.mod
├── main.go                         # Entrypoint — registers all resources
├── internal/
│   └── dashboards/
│       ├── all.go                  # Registry function returning all manifests
│       └── sample.go              # Example dashboard using foundation-sdk builders
└── README.md
```

## Next Steps After Scaffolding

1. `cd my-dashboards && go mod tidy`
2. Configure gcx: `gcx config set stacks.default.grafana.server <URL>`, `gcx config set stacks.default.grafana.token <TOKEN>`, and `gcx config set contexts.default.stack default`
3. Edit `internal/dashboards/sample.go` or generate new stubs with `gcx dev generate`
4. Push to Grafana: `gcx resources push`

## Common Issues

| Issue | Fix |
|-------|-----|
| `go mod tidy` fails | Ensure your Go toolchain meets the version required by the generated `go.mod` |
| Project name has spaces | Names are auto-kebab-cased; spaces become hyphens |
| Want to add alert rules | Create `internal/alerts/` and use `gcx dev generate alerts/my-rule.go` |

