@terreno/mcp 56.0.0-beta.0 → 57.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +10 -11
- package/dist/bootstrap.js.map +1 -1
- package/dist/docs/templates/bootstrap/backend/types/models/userTypes.template.md +5 -4
- package/dist/docs/templates/tools/model.template.md +4 -2
- package/dist/docs/upgrades/0.31.0.md +60 -0
- package/dist/docs/upgrades/56.0.0-beta.2.md +59 -0
- package/dist/docs/upgrades/57.0.0-beta.1.md +41 -0
- package/dist/docs/versioned/next/README.md +1 -0
- package/dist/docs/versioned/next/explanation/README.md +7 -1
- package/dist/docs/versioned/next/explanation/deployment-architecture-gcp.md +65 -0
- package/dist/docs/versioned/next/explanation/deployment-baseline.md +78 -0
- package/dist/docs/versioned/next/explanation/positioning.md +164 -0
- package/dist/docs/versioned/next/explanation/repository-settings.md +44 -0
- package/dist/docs/versioned/next/explanation/roadmap-process.md +330 -0
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +887 -0
- package/dist/docs/versioned/next/how-to/README.md +8 -0
- package/dist/docs/versioned/next/how-to/build-for-web.md +69 -0
- package/dist/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +115 -0
- package/dist/docs/versioned/next/how-to/deploy-to-gcp.md +20 -228
- package/dist/docs/versioned/next/how-to/deploy-web-to-gcs-cdn.md +183 -0
- package/dist/docs/versioned/next/implementationPlans/PLAN_INDEX.md +31 -0
- package/dist/docs/versioned/next/implementationPlans/README.md +56 -30
- package/dist/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/ai-dev-loop-boost.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +115 -0
- package/dist/docs/versioned/next/implementationPlans/billing-stripe.md +158 -0
- package/dist/docs/versioned/next/implementationPlans/build-terreno-app-validation.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/comms-abstraction.md +323 -0
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-expo-push.md +107 -0
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +157 -0
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +155 -0
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-verify.md +99 -0
- package/dist/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +180 -0
- package/dist/docs/versioned/next/implementationPlans/deploy-to-gcp.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/deploy-to-vercel.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/deployment-foundation.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/docs-reference-coverage.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/docs-tutorials-ai-first.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/examples-demo-coverage.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/infra-mcp-research.md +188 -0
- package/dist/docs/versioned/next/implementationPlans/infra-mcp.md +269 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci-research.md +126 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +269 -0
- package/dist/docs/versioned/next/implementationPlans/native-module-baseline.md +105 -0
- package/dist/docs/versioned/next/implementationPlans/orgs-and-teams.md +158 -0
- package/dist/docs/versioned/next/implementationPlans/oss-governance-baseline.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/password-reset-and-email-verification.md +147 -0
- package/dist/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/public-roadmap-github.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/upgrade-guides-and-skill.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/web-ssr-and-admin-spa.md +1 -0
- package/dist/docs/versioned/next/reference/README.md +5 -0
- package/dist/docs/versioned/next/reference/admin-spa.md +130 -0
- package/dist/docs/versioned/next/reference/ai.md +519 -0
- package/dist/docs/versioned/next/reference/comms.md +132 -0
- package/dist/docs/versioned/next/reference/environment-variables.md +229 -382
- package/dist/docs/versioned/next/reference/test.md +108 -0
- package/dist/docs/versioned/next/roadmap.md +9 -0
- package/dist/docs/versioned/next/tasks/README.md +42 -0
- package/dist/docs/versioned/next/tasks/agentic-sdlc-plugin.md +5 -5
- package/dist/docs/versioned/next/tasks/billing-stripe.md +75 -0
- package/dist/docs/versioned/next/tasks/comms-abstraction.md +90 -0
- package/dist/docs/versioned/next/tasks/comms-adapter-expo-push.md +29 -0
- package/dist/docs/versioned/next/tasks/comms-adapter-sendgrid.md +39 -0
- package/dist/docs/versioned/next/tasks/comms-adapter-twilio-sms.md +39 -0
- package/dist/docs/versioned/next/tasks/comms-adapter-twilio-verify.md +19 -0
- package/dist/docs/versioned/next/tasks/comms-admin-dashboard.md +52 -0
- package/dist/docs/versioned/next/tasks/deploy-to-gcp.md +11 -11
- package/dist/docs/versioned/next/tasks/deployment-foundation.md +12 -12
- package/dist/docs/versioned/next/tasks/docs-reference-coverage.md +4 -4
- package/dist/docs/versioned/next/tasks/infra-mcp.md +43 -0
- package/dist/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +215 -0
- package/dist/docs/versioned/next/tasks/native-module-baseline.md +42 -0
- package/dist/docs/versioned/next/tasks/orgs-and-teams.md +70 -0
- package/dist/docs/versioned/next/tasks/oss-governance-baseline.md +18 -18
- package/dist/docs/versioned/next/tasks/password-reset-and-email-verification.md +60 -0
- package/dist/docs/versioned/next/tasks/positioning-django-rails-universal.md +4 -4
- package/dist/docs/versioned/next/tasks/public-roadmap-github.md +15 -15
- package/package.json +4 -3
- package/src/docs/templates/bootstrap/backend/types/models/userTypes.template.md +5 -4
- package/src/docs/templates/tools/model.template.md +4 -2
- package/src/docs/upgrades/0.31.0.md +60 -0
- package/src/docs/upgrades/56.0.0-beta.2.md +59 -0
- package/src/docs/upgrades/57.0.0-beta.1.md +41 -0
- package/src/docs/versioned/next/README.md +1 -0
- package/src/docs/versioned/next/explanation/README.md +7 -1
- package/src/docs/versioned/next/explanation/deployment-architecture-gcp.md +65 -0
- package/src/docs/versioned/next/explanation/deployment-baseline.md +78 -0
- package/src/docs/versioned/next/explanation/positioning.md +164 -0
- package/src/docs/versioned/next/explanation/repository-settings.md +44 -0
- package/src/docs/versioned/next/explanation/roadmap-process.md +330 -0
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +887 -0
- package/src/docs/versioned/next/how-to/README.md +8 -0
- package/src/docs/versioned/next/how-to/build-for-web.md +69 -0
- package/src/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +115 -0
- package/src/docs/versioned/next/how-to/deploy-to-gcp.md +20 -228
- package/src/docs/versioned/next/how-to/deploy-web-to-gcs-cdn.md +183 -0
- package/src/docs/versioned/next/implementationPlans/PLAN_INDEX.md +31 -0
- package/src/docs/versioned/next/implementationPlans/README.md +56 -30
- package/src/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +2 -1
- package/src/docs/versioned/next/implementationPlans/ai-dev-loop-boost.md +1 -0
- package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +115 -0
- package/src/docs/versioned/next/implementationPlans/billing-stripe.md +158 -0
- package/src/docs/versioned/next/implementationPlans/build-terreno-app-validation.md +1 -0
- package/src/docs/versioned/next/implementationPlans/comms-abstraction.md +323 -0
- package/src/docs/versioned/next/implementationPlans/comms-adapter-expo-push.md +107 -0
- package/src/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +157 -0
- package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +155 -0
- package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-verify.md +99 -0
- package/src/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +180 -0
- package/src/docs/versioned/next/implementationPlans/deploy-to-gcp.md +1 -0
- package/src/docs/versioned/next/implementationPlans/deploy-to-vercel.md +1 -0
- package/src/docs/versioned/next/implementationPlans/deployment-foundation.md +1 -0
- package/src/docs/versioned/next/implementationPlans/docs-reference-coverage.md +1 -0
- package/src/docs/versioned/next/implementationPlans/docs-tutorials-ai-first.md +1 -0
- package/src/docs/versioned/next/implementationPlans/examples-demo-coverage.md +1 -0
- package/src/docs/versioned/next/implementationPlans/infra-mcp-research.md +188 -0
- package/src/docs/versioned/next/implementationPlans/infra-mcp.md +269 -0
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci-research.md +126 -0
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +269 -0
- package/src/docs/versioned/next/implementationPlans/native-module-baseline.md +105 -0
- package/src/docs/versioned/next/implementationPlans/orgs-and-teams.md +158 -0
- package/src/docs/versioned/next/implementationPlans/oss-governance-baseline.md +1 -0
- package/src/docs/versioned/next/implementationPlans/password-reset-and-email-verification.md +147 -0
- package/src/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -0
- package/src/docs/versioned/next/implementationPlans/public-roadmap-github.md +1 -0
- package/src/docs/versioned/next/implementationPlans/upgrade-guides-and-skill.md +1 -0
- package/src/docs/versioned/next/implementationPlans/web-ssr-and-admin-spa.md +1 -0
- package/src/docs/versioned/next/reference/README.md +5 -0
- package/src/docs/versioned/next/reference/admin-spa.md +130 -0
- package/src/docs/versioned/next/reference/ai.md +519 -0
- package/src/docs/versioned/next/reference/comms.md +132 -0
- package/src/docs/versioned/next/reference/environment-variables.md +229 -382
- package/src/docs/versioned/next/reference/test.md +108 -0
- package/src/docs/versioned/next/roadmap.md +9 -0
- package/src/docs/versioned/next/tasks/README.md +42 -0
- package/src/docs/versioned/next/tasks/agentic-sdlc-plugin.md +5 -5
- package/src/docs/versioned/next/tasks/billing-stripe.md +75 -0
- package/src/docs/versioned/next/tasks/comms-abstraction.md +90 -0
- package/src/docs/versioned/next/tasks/comms-adapter-expo-push.md +29 -0
- package/src/docs/versioned/next/tasks/comms-adapter-sendgrid.md +39 -0
- package/src/docs/versioned/next/tasks/comms-adapter-twilio-sms.md +39 -0
- package/src/docs/versioned/next/tasks/comms-adapter-twilio-verify.md +19 -0
- package/src/docs/versioned/next/tasks/comms-admin-dashboard.md +52 -0
- package/src/docs/versioned/next/tasks/deploy-to-gcp.md +11 -11
- package/src/docs/versioned/next/tasks/deployment-foundation.md +12 -12
- package/src/docs/versioned/next/tasks/docs-reference-coverage.md +4 -4
- package/src/docs/versioned/next/tasks/infra-mcp.md +43 -0
- package/src/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +215 -0
- package/src/docs/versioned/next/tasks/native-module-baseline.md +42 -0
- package/src/docs/versioned/next/tasks/orgs-and-teams.md +70 -0
- package/src/docs/versioned/next/tasks/oss-governance-baseline.md +18 -18
- package/src/docs/versioned/next/tasks/password-reset-and-email-verification.md +60 -0
- package/src/docs/versioned/next/tasks/positioning-django-rails-universal.md +4 -4
- package/src/docs/versioned/next/tasks/public-roadmap-github.md +15 -15
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# Public roadmap process
|
|
2
|
+
|
|
3
|
+
Terreno runs its **public roadmap on GitHub** and keeps **sprint execution in Linear**.
|
|
4
|
+
Implementation plans in `docs/implementationPlans/` remain the design source of truth for
|
|
5
|
+
both.
|
|
6
|
+
|
|
7
|
+
- **GitHub** — discussions, triaged issues, the Terreno Roadmap project board, generated
|
|
8
|
+
[`ROADMAP.md`](https://github.com/FlourishHealth/terreno/blob/master/ROADMAP.md)
|
|
9
|
+
- **Linear** — estimates, assignees, sprint workflow (internal)
|
|
10
|
+
- **IPs** — approved design docs before substantial cross-package work
|
|
11
|
+
|
|
12
|
+
See also [CONTRIBUTING.md](https://github.com/FlourishHealth/terreno/blob/master/CONTRIBUTING.md) for the contributor intake flow.
|
|
13
|
+
|
|
14
|
+
## How work flows (IP ↔ roadmap)
|
|
15
|
+
|
|
16
|
+
One idea travels through discussion, a tracking issue, a design doc, implementation, and
|
|
17
|
+
release. Each artifact is authoritative for exactly one thing, so nothing is entered twice.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Discussion (Ideas/RFC)
|
|
21
|
+
│ maintainer accepts → roadmap-promote
|
|
22
|
+
▼
|
|
23
|
+
Issue: Status = Shaping ─────────────────────────────┐
|
|
24
|
+
│ IP approved → roadmap-item
|
|
25
|
+
Blend writes IP + task list ────────────────────────┤ (sets IP field, Shaping → Planned)
|
|
26
|
+
(docs/implementationPlans/ + docs/tasks/) ▼
|
|
27
|
+
Issue: Status = Planned
|
|
28
|
+
│ Roast → Cupping → Pour
|
|
29
|
+
▼
|
|
30
|
+
PR: Fixes #NNN
|
|
31
|
+
│ merge
|
|
32
|
+
▼
|
|
33
|
+
Issue closed · board: Shipped
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The planning pipeline (the `terreno-planning` plugin) drives the design-and-build half;
|
|
37
|
+
the roadmap skills drive the public-tracking half. They meet at one handoff: **Blend
|
|
38
|
+
writes the IP, and once it is Approved hands off to `roadmap-item`.**
|
|
39
|
+
|
|
40
|
+
| Transition | Who owns it | Authoritative artifact |
|
|
41
|
+
| ---------- | ----------- | ---------------------- |
|
|
42
|
+
| Idea debated and shaped | Community + maintainers | GitHub Discussion |
|
|
43
|
+
| Discussion → first tracking issue (`Shaping`) | `roadmap-promote` | GitHub Issue + Project |
|
|
44
|
+
| Design, scope, acceptance criteria | `terreno-1-blend` / `ip` | `docs/implementationPlans/<slug>.md` |
|
|
45
|
+
| Task breakdown for implementation | `terreno-1-blend` / `ip` | `docs/tasks/<slug>.md` |
|
|
46
|
+
| Approved IP → issue `Planned` + `IP` field set | `roadmap-item` | GitHub Issue + Project |
|
|
47
|
+
| Implement, verify, submit, review | `terreno-2-roast` … `terreno-5-dialin` | the PR |
|
|
48
|
+
| Sprint estimates, assignees, internal-only work | Linear | Linear |
|
|
49
|
+
| Public rendered list | CI (`roadmap:generate`) | `ROADMAP.md` |
|
|
50
|
+
|
|
51
|
+
**promote vs item — the one ambiguity worth stating plainly:** `roadmap-promote` opens the
|
|
52
|
+
issue for community-originated work at `Shaping` and never sets the `IP` field or `Planned`.
|
|
53
|
+
`roadmap-item` is the only skill that sets the `IP` field and moves an item to `Planned`,
|
|
54
|
+
and it **updates the promoted issue** rather than opening a second one. Internal-origin work
|
|
55
|
+
with no discussion skips promote and starts at `roadmap-item`.
|
|
56
|
+
|
|
57
|
+
### Repos without a public roadmap
|
|
58
|
+
|
|
59
|
+
The `terreno-planning` plugin is meant to run in any Terreno repo, including ones with no
|
|
60
|
+
Discussions and no roadmap board (Flourish, most consumer apps). There, only the design-and-build
|
|
61
|
+
half applies:
|
|
62
|
+
|
|
63
|
+
- **Blend** still writes the IP + task list — that dual-file model is the source of truth
|
|
64
|
+
everywhere. It detects the absence of `.github/roadmap-fields.yml` and the `roadmap-item`
|
|
65
|
+
skill and **skips the roadmap handoff** instead of inventing issues or labels.
|
|
66
|
+
- Sprint execution is tracked in Linear and linked from the IP header; it is never copied
|
|
67
|
+
into the plan.
|
|
68
|
+
- The `roadmap-*` skills and everything under [Maintainer setup](#maintainer-setup) only
|
|
69
|
+
apply once a repo adopts the public roadmap.
|
|
70
|
+
|
|
71
|
+
## Maintainer setup
|
|
72
|
+
|
|
73
|
+
> **Human action required.** Cloud agents cannot mutate GitHub org/repo settings. Run these
|
|
74
|
+
> steps once per environment.
|
|
75
|
+
|
|
76
|
+
### Enable Discussions
|
|
77
|
+
|
|
78
|
+
1. GitHub → **Settings** → **General** → **Features** → enable **Discussions**.
|
|
79
|
+
2. Create the categories below in **Discussions** → **⚙️ Categories** (display order top to
|
|
80
|
+
bottom).
|
|
81
|
+
|
|
82
|
+
| Order | Name | Format | Who can post | Description (paste into GitHub) |
|
|
83
|
+
| ----- | ---- | ------ | ------------ | --------------------------------- |
|
|
84
|
+
| 1 | Announcements | Announcement | Maintainers only | Official release notes, breaking changes, deprecations, and launch updates from the Terreno team. |
|
|
85
|
+
| 2 | Q&A | Question / Answer | Anyone | Ask how to use Terreno. Search existing threads first; accepted answers may become how-to guides in `docs/how-to/`. |
|
|
86
|
+
| 3 | Ideas | Open-ended | Anyone | Feature ideas and improvements before they are shaped. This is the intake funnel — do not open a tracking issue until a maintainer promotes your idea. |
|
|
87
|
+
| 4 | Agents & AI | Open-ended | Anyone | MCP setup, Cursor/Claude skills, agent workflows, and prompt patterns for building with Terreno. |
|
|
88
|
+
| 5 | RFCs | Open-ended | Anyone | Substantial proposals that change public API or add packages. Use the RFC discussion template; accepted RFCs become IPs. |
|
|
89
|
+
| 6 | Show and tell | Open-ended | Anyone | Apps and experiments built with Terreno. Share what you shipped and what friction you hit. |
|
|
90
|
+
| 7 | Docs feedback | Open-ended | Anyone | Report missing or confusing documentation. Link the page URL; recurring feedback becomes docs PRs. |
|
|
91
|
+
|
|
92
|
+
### Pinned posts
|
|
93
|
+
|
|
94
|
+
Pin one intro post per category after creation. Bodies below are ready to paste.
|
|
95
|
+
|
|
96
|
+
#### Announcements
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
Release announcements, breaking changes, and deprecation notices land here.
|
|
100
|
+
|
|
101
|
+
- Do **not** file support bugs as announcements — use [Issues](https://github.com/FlourishHealth/terreno/issues/new/choose) or Q&A.
|
|
102
|
+
- Security issues: see [SECURITY.md](https://github.com/FlourishHealth/terreno/blob/master/SECURITY.md) (private report only).
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### Q&A
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
Ask **how** to use Terreno — setup, APIs, deployment, agents.
|
|
109
|
+
|
|
110
|
+
1. Search [existing Q&A](https://github.com/FlourishHealth/terreno/discussions/categories/q-a) and the [docs site](https://terreno-docs.netlify.app/).
|
|
111
|
+
2. For step-by-step guides, start with [`docs/how-to/`](https://github.com/FlourishHealth/terreno/tree/master/docs/how-to).
|
|
112
|
+
3. Bug reports belong in [Bug report issues](https://github.com/FlourishHealth/terreno/issues/new?template=bug_report.yml), not here.
|
|
113
|
+
|
|
114
|
+
When an answer repeats, maintainers turn it into a how-to doc via PR.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
#### Ideas
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
**Ideas are the intake funnel.** Share problems and rough solutions before they become roadmap items.
|
|
121
|
+
|
|
122
|
+
- Do **not** open a feature issue directly — maintainers promote accepted ideas to tracked issues on the [Terreno Roadmap](https://github.com/FlourishHealth/terreno/projects) board.
|
|
123
|
+
- For API/package-level design, use the **RFCs** category instead.
|
|
124
|
+
- Bugs → [Bug report](https://github.com/FlourishHealth/terreno/issues/new?template=bug_report.yml).
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
#### Agents & AI
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
MCP server setup, Cursor/Claude skills, and agent-driven workflows.
|
|
131
|
+
|
|
132
|
+
- MCP package: [`mcp-server/`](https://github.com/FlourishHealth/terreno/tree/master/mcp-server) and hosted `terreno-mcp`.
|
|
133
|
+
- Agent skills: [`.rulesync/skills/`](https://github.com/FlourishHealth/terreno/tree/master/.rulesync/skills) (mirrored to `.cursor/`, `.claude/`, etc.).
|
|
134
|
+
- Terreno planning plugin: [`plugins/terreno-planning/`](https://github.com/FlourishHealth/terreno/tree/master/plugins/terreno-planning).
|
|
135
|
+
|
|
136
|
+
General feature ideas → **Ideas**. Doc typos → **Docs feedback** or a docs PR.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### RFCs
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
Propose changes to **public API**, **new published packages**, or **cross-package architecture**.
|
|
143
|
+
|
|
144
|
+
Use the [RFC template](https://github.com/FlourishHealth/terreno/discussions/new?category=rfcs) (Summary, Motivation, Design, Alternatives).
|
|
145
|
+
|
|
146
|
+
Accepted RFCs become implementation plans in `docs/implementationPlans/` before large code changes. Small bugs and docs fixes do not need an RFC.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### Show and tell
|
|
150
|
+
|
|
151
|
+
```markdown
|
|
152
|
+
Show what you built with Terreno — screenshots, repos, and lessons learned welcome.
|
|
153
|
+
|
|
154
|
+
Friction you discover may become Ideas, bugs, or docs PRs. This category is for celebration and learning, not support tickets.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### Docs feedback
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
Report missing, outdated, or confusing documentation.
|
|
161
|
+
|
|
162
|
+
Include the **page URL** (docs site or `docs/` path). For quick fixes, open a PR instead.
|
|
163
|
+
|
|
164
|
+
Every docs page also has a **Discuss this page** link in the footer.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Project board
|
|
168
|
+
|
|
169
|
+
Create one GitHub Project named **Terreno Roadmap** (repo-level is fine; org-level also
|
|
170
|
+
works). Link it to `FlourishHealth/terreno`.
|
|
171
|
+
|
|
172
|
+
**Fields** (single-select unless noted):
|
|
173
|
+
|
|
174
|
+
| Field | Type | Options |
|
|
175
|
+
| ----- | ---- | ------- |
|
|
176
|
+
| Status | Single select | `Inbox`, `Shaping`, `Planned`, `In progress`, `In review`, `Shipped`, `Declined` |
|
|
177
|
+
| Area | Single select | `api`, `ui`, `syncdb`, `auth`, `admin`, `ai`, `mcp`, `docs`, `deploy`, `examples`, `dx` |
|
|
178
|
+
| Target | Single select | `0.28`, `0.29`, `Next`, `Future` (add version labels as releases approach) |
|
|
179
|
+
| IP | Text | Slug e.g. `web-ssr-and-admin-spa` (empty when no IP yet) |
|
|
180
|
+
| Impact | Single select | `Breaking`, `Feature`, `Improvement`, `Fix` |
|
|
181
|
+
| Community interest | Number | 👍 count — refresh manually on triage |
|
|
182
|
+
|
|
183
|
+
**Views**
|
|
184
|
+
|
|
185
|
+
1. **Roadmap** — Board layout, group by `Status`, filter `Status != Declined` (default public view).
|
|
186
|
+
2. **By area** — Table, group by `Area`.
|
|
187
|
+
3. **Next release** — Table, filter `Target = Next` (update filter when cutting a release).
|
|
188
|
+
4. **Needs shaping** — Table, filter `Status = Shaping`.
|
|
189
|
+
|
|
190
|
+
**CLI (partial support)**
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
gh project list --owner FlourishHealth --limit 20
|
|
194
|
+
gh project link <project-number> --owner FlourishHealth --repo FlourishHealth/terreno
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Field and view creation is **UI-only** today — recreate the tables above in the Project
|
|
198
|
+
settings.
|
|
199
|
+
|
|
200
|
+
**Backfill:** paste tracking issues from [`roadmap-seed-issues.md`](roadmap-seed-issues.md)
|
|
201
|
+
when each IP reaches **Approved**.
|
|
202
|
+
|
|
203
|
+
### Labels
|
|
204
|
+
|
|
205
|
+
[`.github/labels.yml`](https://github.com/FlourishHealth/terreno/blob/master/.github/labels.yml) is the source of truth.
|
|
206
|
+
|
|
207
|
+
Apply or update labels with `gh` authenticated as a maintainer:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
bun run labels:sync --repo FlourishHealth/terreno --dry-run # preview
|
|
211
|
+
bun run labels:sync --repo FlourishHealth/terreno # apply
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
[`scripts/sync-labels.ts`](https://github.com/FlourishHealth/terreno/blob/master/scripts/sync-labels.ts)
|
|
215
|
+
parses the YAML and passes each description to `gh` as a single argument, so descriptions
|
|
216
|
+
containing commas or quotes survive intact. It refuses to run on a malformed color,
|
|
217
|
+
a missing description, or a duplicate name.
|
|
218
|
+
|
|
219
|
+
Delete unused GitHub defaults after the new taxonomy is applied (`gh label list`).
|
|
220
|
+
|
|
221
|
+
### Secrets for roadmap generation
|
|
222
|
+
|
|
223
|
+
| Name | Kind | Purpose |
|
|
224
|
+
| ---- | ---- | ------- |
|
|
225
|
+
| `TERRENO_PROJECT_NUMBER` | Repository variable | GitHub Project number for **Terreno Roadmap** |
|
|
226
|
+
| `ROADMAP_PROJECT_TOKEN` | Repository secret | Classic PAT with `read:project` (plus `repo` for private repos) |
|
|
227
|
+
|
|
228
|
+
The workflow's built-in `GITHUB_TOKEN` **cannot** be used here: it is repository-scoped and
|
|
229
|
+
returns no `projectV2` data for an organization project. GitHub also reserves the name
|
|
230
|
+
`GITHUB_TOKEN`, so a PAT cannot be supplied under that name — hence the separate
|
|
231
|
+
`ROADMAP_PROJECT_TOKEN` secret. Pushing the regenerated `ROADMAP.md` still uses the default
|
|
232
|
+
token via `permissions: contents: write`.
|
|
233
|
+
|
|
234
|
+
Locally, export the PAT as `GITHUB_TOKEN` (for example `GITHUB_TOKEN=$(gh auth token)`), which
|
|
235
|
+
is the variable the generator reads.
|
|
236
|
+
|
|
237
|
+
## Maintainer skills
|
|
238
|
+
|
|
239
|
+
Four agent skills cover the recurring roadmap work. Each one researches, proposes, and then
|
|
240
|
+
**stops for a maintainer to approve** before touching GitHub — roadmap decisions are the most
|
|
241
|
+
human part of the process, so none of them mutate state on their own. All four are
|
|
242
|
+
`disable-model-invocation`, meaning an agent will not start them on its own initiative;
|
|
243
|
+
you invoke them explicitly.
|
|
244
|
+
|
|
245
|
+
| Skill | Use it when |
|
|
246
|
+
| ----- | ----------- |
|
|
247
|
+
| `roadmap-triage` | An inbound issue or discussion needs `area:*` / `type:*` / `status:*` labels, or a call on whether it belongs on the board |
|
|
248
|
+
| `roadmap-promote` | Maintainers accepted an Ideas or RFC discussion and it needs a tracked issue that links back to the thread |
|
|
249
|
+
| `roadmap-item` | An approved IP needs its public tracking issue, or an existing entry's scope changed |
|
|
250
|
+
| `roadmap-review` | Recurring hygiene: status drift, stale items, untriaged backlog, promotion candidates, then regenerate `ROADMAP.md` |
|
|
251
|
+
|
|
252
|
+
Sources live in `.rulesync/skills/`; run `bun run rules` after editing to regenerate the
|
|
253
|
+
per-agent mirrors.
|
|
254
|
+
|
|
255
|
+
### Checking an item before you file it
|
|
256
|
+
|
|
257
|
+
The skills do not carry a copy of the taxonomy. They call:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
bun run roadmap:check --labels "area:api,type:feature" --status Planned --target Next --impact Feature --area api
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Run it with no arguments to print every valid label and field option. It enforces exactly one
|
|
264
|
+
`area:*` and one `type:*` label, rejects labels absent from
|
|
265
|
+
[`.github/labels.yml`](https://github.com/FlourishHealth/terreno/blob/master/.github/labels.yml),
|
|
266
|
+
rejects Project values absent from
|
|
267
|
+
[`.github/roadmap-fields.yml`](https://github.com/FlourishHealth/terreno/blob/master/.github/roadmap-fields.yml),
|
|
268
|
+
and catches an `Area` field that disagrees with the issue's `area:` label.
|
|
269
|
+
|
|
270
|
+
Those two files are the single source for the taxonomy: labels in `labels.yml`, Status/Target/
|
|
271
|
+
Impact options in `roadmap-fields.yml`, and Area derived from the `area:*` labels rather than
|
|
272
|
+
listed a second time. The Project field options in the table above must match
|
|
273
|
+
`roadmap-fields.yml`; a test asserts the roadmap generator's own ordering stays in sync with
|
|
274
|
+
both files.
|
|
275
|
+
|
|
276
|
+
## Linear bridge
|
|
277
|
+
|
|
278
|
+
| Artifact | System of record |
|
|
279
|
+
| -------- | ---------------- |
|
|
280
|
+
| Public discussion, prioritization debate | GitHub Discussions |
|
|
281
|
+
| Triaged work items, roadmap columns | GitHub Issues + Project |
|
|
282
|
+
| Design scope, acceptance criteria | `docs/implementationPlans/*.md` |
|
|
283
|
+
| Sprint estimates, assignees, internal-only work | Linear |
|
|
284
|
+
|
|
285
|
+
**GitHub → Linear (one-way intake)**
|
|
286
|
+
|
|
287
|
+
1. Maintainer adds the `tracked` label to a GitHub issue.
|
|
288
|
+
2. Linear's GitHub integration imports the issue into the Terreno Linear team.
|
|
289
|
+
3. Title and description sync on creation; **status is not synced back**.
|
|
290
|
+
|
|
291
|
+
**Closing the loop:** merging PRs use `Fixes #NNN` so GitHub closes the issue and the board
|
|
292
|
+
item moves to `Shipped`. Closing Linear alone does **not** change GitHub state.
|
|
293
|
+
|
|
294
|
+
**Internal → public:** open a GitHub issue manually and paste the Linear URL. Internal-only
|
|
295
|
+
Linear work is never mirrored.
|
|
296
|
+
|
|
297
|
+
**Why not two-way status sync?** Bidirectional sync produces confusing loops between board
|
|
298
|
+
columns and sprint state. One-way intake plus `Fixes #NNN` keeps public state accurate.
|
|
299
|
+
|
|
300
|
+
Configure Linear: **Settings → Integrations → GitHub** → import issues with label `tracked`.
|
|
301
|
+
|
|
302
|
+
## One-time backfill
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
gh issue list --state open --limit 200 --json number,title,labels,updatedAt
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
For each issue: assign `area:*` + `type:*`, add to board as `Inbox` if relevant, or
|
|
309
|
+
`status:wontfix` / close if stale (> 6 months, no longer applies). A human must run this —
|
|
310
|
+
do not claim completion until done.
|
|
311
|
+
|
|
312
|
+
## Automation in this repo
|
|
313
|
+
|
|
314
|
+
| Workflow | Trigger | Purpose |
|
|
315
|
+
| -------- | ------- | ------- |
|
|
316
|
+
| [`.github/workflows/triage.yml`](https://github.com/FlourishHealth/terreno/blob/master/.github/workflows/triage.yml) | Issue opened | `status:needs-triage` + `area:*` from package dropdown |
|
|
317
|
+
| [`.github/workflows/roadmap-generate.yml`](https://github.com/FlourishHealth/terreno/blob/master/.github/workflows/roadmap-generate.yml) | Daily + manual | Regenerate `ROADMAP.md` from the Project board |
|
|
318
|
+
|
|
319
|
+
Triage resolves the `area:*` label with
|
|
320
|
+
[`scripts/issueAreaLabels.ts`](https://github.com/FlourishHealth/terreno/blob/master/scripts/issueAreaLabels.ts),
|
|
321
|
+
which owns the package-to-area table. Add new packages there, not in the workflow.
|
|
322
|
+
|
|
323
|
+
Run the generator locally against the real board:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
GITHUB_TOKEN=$(gh auth token) TERRENO_PROJECT_NUMBER=... bun run roadmap:generate
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
The generator exits non-zero when the project cannot be read, so a bad project number or a
|
|
330
|
+
token without `read:project` fails loudly instead of writing an empty `ROADMAP.md`.
|