agentsys 5.3.7 → 5.4.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.
Files changed (40) hide show
  1. package/.agnix.toml +17 -7
  2. package/.claude-plugin/marketplace.json +13 -2
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.gitmodules +3 -0
  5. package/AGENTS.md +4 -4
  6. package/CHANGELOG.md +37 -0
  7. package/README.md +46 -5
  8. package/lib/adapter-transforms.js +3 -1
  9. package/package.json +1 -1
  10. package/site/assets/css/main.css +39 -1
  11. package/site/assets/js/main.js +24 -0
  12. package/site/content.json +4 -4
  13. package/site/index.html +82 -7
  14. package/site/ux-spec.md +5 -5
  15. package/agent-knowledge/AGENTS.md +0 -231
  16. package/agent-knowledge/acp-with-codex-gemini-copilot-claude.md +0 -504
  17. package/agent-knowledge/ai-cli-advanced-integration-patterns.md +0 -670
  18. package/agent-knowledge/ai-cli-non-interactive-programmatic-usage.md +0 -1394
  19. package/agent-knowledge/all-in-one-plus-modular-packages.md +0 -576
  20. package/agent-knowledge/cli-browser-automation-agents.md +0 -936
  21. package/agent-knowledge/github-org-project-management.md +0 -319
  22. package/agent-knowledge/github-org-structure-patterns.md +0 -268
  23. package/agent-knowledge/kiro-supervised-autopilot.md +0 -400
  24. package/agent-knowledge/multi-product-org-docs.md +0 -622
  25. package/agent-knowledge/oss-org-naming-patterns.md +0 -368
  26. package/agent-knowledge/resources/acp-with-codex-gemini-copilot-claude-sources.json +0 -408
  27. package/agent-knowledge/resources/ai-cli-non-interactive-programmatic-usage-sources.json +0 -500
  28. package/agent-knowledge/resources/all-in-one-plus-modular-packages-sources.json +0 -310
  29. package/agent-knowledge/resources/cli-browser-automation-agents-sources.json +0 -428
  30. package/agent-knowledge/resources/github-org-project-management-sources.json +0 -239
  31. package/agent-knowledge/resources/github-org-structure-patterns-sources.json +0 -293
  32. package/agent-knowledge/resources/kiro-supervised-autopilot-sources.json +0 -135
  33. package/agent-knowledge/resources/multi-product-org-docs-sources.json +0 -514
  34. package/agent-knowledge/resources/oss-org-naming-patterns-sources.json +0 -458
  35. package/agent-knowledge/resources/skill-plugin-distribution-patterns-sources.json +0 -290
  36. package/agent-knowledge/resources/terminal-browsers-agent-automation-sources.json +0 -758
  37. package/agent-knowledge/resources/web-session-persistence-cli-agents-sources.json +0 -528
  38. package/agent-knowledge/skill-plugin-distribution-patterns.md +0 -661
  39. package/agent-knowledge/terminal-browsers-agent-automation.md +0 -776
  40. package/agent-knowledge/web-session-persistence-cli-agents.md +0 -1352
@@ -1,319 +0,0 @@
1
- # Learning Guide: GitHub Organization Project Management for Multi-Repo Open Source Ecosystems
2
-
3
- **Generated**: 2026-02-21
4
- **Sources**: 15 resources analyzed
5
- **Depth**: deep
6
-
7
- ## Prerequisites
8
-
9
- - Familiarity with GitHub Issues and Pull Requests
10
- - Basic understanding of GitHub Organizations
11
- - Awareness of multi-repo project structures
12
- - Optional: GraphQL API knowledge for automation
13
-
14
- ## TL;DR
15
-
16
- - GitHub Projects v2 is the primary tool for cross-repo org-level project management, supporting up to 50,000 items and 50 custom fields across all repos in an org.
17
- - Issue Types (public preview, Jan 2025) and Sub-Issues enable structured work hierarchies at the org level without extra tooling.
18
- - Automation via built-in workflows, GitHub Actions (`actions/add-to-project@v1`), and the GraphQL API is essential for keeping cross-repo boards accurate at scale.
19
- - Successful open source orgs (Rust, Kubernetes, Astro, GitHub itself) combine a public roadmap project, RFC/enhancement-proposal repos, and working groups or SIGs to coordinate distributed contributors.
20
- - The GraphQL API with the `project` OAuth scope unlocks full programmatic control; `read:project` is sufficient for read-only integrations.
21
-
22
- ## Core Concepts
23
-
24
- ### GitHub Projects v2
25
-
26
- Projects v2 replaced the classic Projects board in 2022. It lives at the org level (not per-repo) and can aggregate items from any repository in the organization.
27
-
28
- Key capabilities:
29
- - **Views**: Table (spreadsheet-style), Board (kanban), Roadmap (Gantt-like timeline)
30
- - **Custom fields**: Up to 50 per project. Types: text, number, date, single-select, iteration
31
- - **Grouping, filtering, sorting**: Available across all views; filters use GitHub's advanced search syntax including AND/OR keywords and parentheses
32
- - **Capacity**: 50,000 items per project
33
- - **Cross-repo**: A single project can contain issues and PRs from any repo in the org
34
-
35
- ### Issue Types
36
-
37
- Introduced in public preview January 2025. Org admins define up to 25 custom issue types (defaults: Task, Bug, Feature). Types are available across all repos and can be filtered in Projects and search.
38
-
39
- This replaces the common pattern of using label conventions (`type: bug`, `kind/feature`) with a first-class field.
40
-
41
- ### Sub-Issues
42
-
43
- Also in public preview. Issues can have a parent-child relationship:
44
- - Break a large epic into sub-issues
45
- - Progress bar displayed on the parent issue
46
- - Sub-issues can live in different repos from the parent
47
- - Enables hierarchical tracking without external tools
48
-
49
- ### Automation Tiers
50
-
51
- | Plan | Built-in Workflows |
52
- |------|--------------------|
53
- | Free | 1 active workflow |
54
- | Pro / Team | 5 active workflows |
55
- | Enterprise | 20 active workflows |
56
-
57
- Built-in workflow triggers:
58
- - Item closed → set status
59
- - PR merged → set status
60
- - Item added to repo → add to project (filter by label, status, or assignee)
61
- - Item archived by staleness (14 days, 3 weeks, or 1 month of inactivity)
62
-
63
- For more complex rules, use GitHub Actions or the GraphQL API.
64
-
65
- ### GraphQL API
66
-
67
- All project mutations require the `project` OAuth scope. Read-only operations use `read:project`.
68
-
69
- Primary operations:
70
- - `addProjectV2ItemById` - add an issue/PR to a project
71
- - `updateProjectV2ItemFieldValue` - set a field value on an item
72
- - `createProjectV2` - create a new project
73
-
74
- Webhook events: `projects_v2_item` (created, edited, deleted, reordered, converted)
75
-
76
- ## Code Examples
77
-
78
- ### Auto-Add Issues from Any Repo via GitHub Actions
79
-
80
- ```yaml
81
- # .github/workflows/add-to-project.yml
82
- # Place this in EACH repo that should auto-add items to the org project
83
- name: Add to Org Project
84
-
85
- on:
86
- issues:
87
- types: [opened]
88
- pull_request:
89
- types: [opened]
90
-
91
- jobs:
92
- add-to-project:
93
- runs-on: ubuntu-latest
94
- steps:
95
- - uses: actions/add-to-project@v1
96
- with:
97
- project-url: https://github.com/orgs/MY-ORG/projects/42
98
- github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
99
- # Optional: only add if issue has specific label
100
- labeled: triage, bug, enhancement
101
- ```
102
-
103
- The PAT must belong to an org member and have the `project` scope.
104
-
105
- ### GraphQL: Add Issue to Project
106
-
107
- ```graphql
108
- mutation AddIssueToProject($projectId: ID!, $contentId: ID!) {
109
- addProjectV2ItemById(input: {
110
- projectId: $projectId
111
- contentId: $contentId
112
- }) {
113
- item {
114
- id
115
- }
116
- }
117
- }
118
- ```
119
-
120
- ### GraphQL: Update a Field Value
121
-
122
- ```graphql
123
- mutation SetStatus($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
124
- updateProjectV2ItemFieldValue(input: {
125
- projectId: $projectId
126
- itemId: $itemId
127
- fieldId: $fieldId
128
- value: {
129
- singleSelectOptionId: $optionId
130
- }
131
- }) {
132
- projectV2Item {
133
- id
134
- }
135
- }
136
- }
137
- ```
138
-
139
- ### GraphQL: Find Project by Org and Number
140
-
141
- ```graphql
142
- query FindProject($org: String!, $number: Int!) {
143
- organization(login: $org) {
144
- projectV2(number: $number) {
145
- id
146
- title
147
- fields(first: 20) {
148
- nodes {
149
- ... on ProjectV2Field {
150
- id
151
- name
152
- }
153
- ... on ProjectV2SingleSelectField {
154
- id
155
- name
156
- options {
157
- id
158
- name
159
- }
160
- }
161
- }
162
- }
163
- }
164
- }
165
- }
166
- ```
167
-
168
- ### Advanced Search: Filter Issues by Type and Status
169
-
170
- ```
171
- org:MY-ORG is:open type:feature label:roadmap
172
- org:MY-ORG is:open type:bug (label:priority-high OR label:priority-critical)
173
- ```
174
-
175
- ## Org-Level Patterns from Real Projects
176
-
177
- ### GitHub's Public Roadmap
178
-
179
- GitHub maintains a public project at `github.com/orgs/github/projects/4247`. Key practices:
180
- - Quarterly columns map to release milestones
181
- - The `shipped` label is applied when a feature lands, and the issue body is updated with a changelog link
182
- - Items stay visible after shipping in a "Shipped" column (archive only after some time)
183
- - This gives external contributors a real-time view of planned and recent work
184
-
185
- ### Kubernetes SIG Model
186
-
187
- Kubernetes uses Special Interest Groups (SIGs) to coordinate work across 100+ repos:
188
- - Each SIG owns a subset of repos and has a dedicated project board
189
- - Kubernetes Enhancement Proposals (KEPs) live in a single `kubernetes/enhancements` repo as structured markdown files
190
- - KEPs link to issues/PRs in implementation repos
191
- - SIG leads triage new issues weekly and apply standardized labels (`sig/network`, `kind/feature`, etc.)
192
-
193
- ### Rust-lang RFC Process
194
-
195
- - RFCs live in `rust-lang/rfcs` as PRs
196
- - Working groups coordinate cross-team implementation
197
- - A dedicated project tracks RFC lifecycle stages (proposed → accepted → stabilized → closed)
198
- - Cross-repo coordination uses GitHub Projects with a single-select "Phase" field
199
-
200
- ### Astro (withastro)
201
-
202
- - 51 repos under one org
203
- - `withastro/roadmap` repo hosts RFC discussions and a public-facing roadmap project
204
- - Uses pnpm workspaces for the core monorepo; satellite repos (integrations, adapters) auto-add to the roadmap project via GitHub Actions
205
- - Labels are org-wide and enforced consistently
206
-
207
- ## Common Pitfalls
208
-
209
- | Pitfall | Why It Happens | How to Avoid |
210
- |---------|---------------|--------------|
211
- | Project scope creep | One project tracks everything; becomes unusable | One project per initiative or quarter; archive completed projects |
212
- | Label inconsistency across repos | Each repo grows its own labels organically | Manage labels programmatically; use a shared label config script or action |
213
- | Missing automation tokens | PATs expire or lack correct scopes; cross-repo actions silently fail | Use fine-grained PATs with explicit `project` scope; rotate with secrets manager |
214
- | Stale items clogging board | Closed issues not archived; old PRs linger | Enable auto-archive: set staleness to 14 days or archive on close/merge |
215
- | No triage process | New issues pile up without status | Add "Needs Triage" as default status; automate: new issue → Needs Triage |
216
- | Cross-repo sub-issue confusion | Contributors open sub-issues in wrong repo | Document in CONTRIBUTING.md which repo to use for which issue type |
217
- | Workflow count limits on Free plan | Only 1 built-in workflow on Free | Use GitHub Actions instead of built-in workflows for more rules |
218
- | Views not shared with team | Each person builds their own view | Create named saved views in the project for common filters (My Items, This Sprint, Blocked) |
219
-
220
- ## Best Practices
221
-
222
- 1. **One source of truth per initiative** - Each major feature or release gets exactly one project. Avoid tracking the same item in multiple projects.
223
-
224
- 2. **Standardize labels org-wide** - Use a label sync action (e.g., `EndBug/add-or-update-label`) to keep labels consistent across all repos. Document the label taxonomy in a `CONTRIBUTING.md` or `.github` repo.
225
-
226
- 3. **Use Issue Types instead of type labels** - Now that Issue Types are available (Jan 2025 public preview), prefer them over label conventions for `bug`, `feature`, `task`. Labels are better for priority, status, and component.
227
-
228
- 4. **Automate triage with GitHub Actions** - New issues opened in any repo auto-add to the org triage project with status "Needs Triage". Maintainers process the triage board, not individual repos.
229
-
230
- 5. **Keep the roadmap project public** - A public roadmap project builds contributor trust and reduces duplicate "when will X be done?" issues. Model: GitHub's own public roadmap.
231
-
232
- 6. **Use Iteration fields for sprints or releases** - Iterations are time-boxed periods (e.g., 2-week sprints). Assign items to iterations instead of milestones for better burndown tracking.
233
-
234
- 7. **Multiple saved views per audience** - Create views for: "My open items" (assignee filter), "This sprint" (iteration filter), "Blocked" (status filter), "Triage queue" (status = Needs Triage).
235
-
236
- 8. **Sub-issues for epics, not just labels** - Break large epics into sub-issues rather than relying on a checklist in the parent body. Progress tracking is automatic and cross-repo linking is supported.
237
-
238
- 9. **Automate status transitions** - Configure built-in workflows: PR merged → item status set to Done. Issue closed as not-planned → item archived. This removes manual housekeeping.
239
-
240
- 10. **Use the `.github` meta-repo** - A `.github` repo in the org stores default issue templates, PR templates, `CONTRIBUTING.md`, and Actions workflows that apply to all repos with no files.
241
-
242
- ## Field Design for Multi-Repo Projects
243
-
244
- Recommended custom fields for an org-level project:
245
-
246
- | Field Name | Type | Values / Notes |
247
- |------------|------|----------------|
248
- | Status | Single Select | Triage, Backlog, In Progress, In Review, Done, Blocked |
249
- | Priority | Single Select | Critical, High, Medium, Low |
250
- | Sprint / Iteration | Iteration | 2-week cadence |
251
- | Effort | Single Select | XS, S, M, L, XL |
252
- | Component | Single Select | Per-repo or per-area (e.g., Core, Docs, CLI, API) |
253
- | Target Release | Single Select | v1.0, v1.1, Backlog |
254
- | Repo | Text | Auto-populated via automation (helps when filtering Table view) |
255
-
256
- ## GitHub Actions Automation Recipes
257
-
258
- ### Auto-Set Status to "In Progress" When PR Opened
259
-
260
- ```yaml
261
- name: PR Opened - Set In Progress
262
-
263
- on:
264
- pull_request:
265
- types: [opened, reopened]
266
-
267
- jobs:
268
- update-project:
269
- runs-on: ubuntu-latest
270
- steps:
271
- - name: Move linked issues to In Progress
272
- uses: actions/github-script@v7
273
- with:
274
- github-token: ${{ secrets.PROJECT_PAT }}
275
- script: |
276
- // Use GraphQL to find project item for this PR and update status
277
- // Implementation varies by project ID and field IDs
278
- ```
279
-
280
- ### Sync Org Labels Across All Repos
281
-
282
- ```yaml
283
- # Run in the .github meta-repo
284
- name: Sync Labels
285
-
286
- on:
287
- push:
288
- paths: ['labels.yml']
289
- schedule:
290
- - cron: '0 2 * * 1' # Weekly Monday 2am
291
-
292
- jobs:
293
- sync:
294
- runs-on: ubuntu-latest
295
- steps:
296
- - uses: actions/checkout@v4
297
- - uses: EndBug/label-sync@v2
298
- with:
299
- config-file: labels.yml
300
- delete-other-labels: false
301
- token: ${{ secrets.LABEL_SYNC_PAT }}
302
- # Applies to all repos accessible to the PAT
303
- ```
304
-
305
- ## Further Reading
306
-
307
- | Resource | Type | Why Recommended |
308
- |----------|------|-----------------|
309
- | [GitHub Projects Docs](https://docs.github.com/en/issues/planning-and-tracking-with-projects) | Official Docs | Canonical reference for all Projects v2 features |
310
- | [GitHub's Public Roadmap](https://github.com/orgs/github/projects/4247) | Live Example | See how GitHub itself manages a public org project |
311
- | [actions/add-to-project](https://github.com/actions/add-to-project) | GitHub Action | Official action for cross-repo auto-add |
312
- | [Kubernetes SIG structure](https://github.com/kubernetes/community/blob/master/sig-list.md) | Reference | How Kubernetes scales to 100+ repos with SIGs |
313
- | [withastro/roadmap](https://github.com/withastro/roadmap) | Reference | Astro's RFC and roadmap coordination model |
314
- | [GitHub Issues API (GraphQL)](https://docs.github.com/en/graphql/reference/mutations#addprojectv2itembyid) | API Docs | GraphQL mutations for project automation |
315
- | [EndBug/label-sync](https://github.com/EndBug/label-sync) | GitHub Action | Sync labels across all org repos |
316
-
317
- ---
318
-
319
- *This guide was synthesized from research on GitHub Projects v2, Issue Types, Sub-Issues, GraphQL API, and real-world org patterns (Rust-lang, Kubernetes, Astro, GitHub). See `resources/github-org-project-management-sources.json` for full source list.*
@@ -1,268 +0,0 @@
1
- # Learning Guide: GitHub Organization Structure Patterns for Developer Tool Ecosystems
2
-
3
- **Generated**: 2026-02-21
4
- **Sources**: 18 resources analyzed
5
- **Depth**: deep
6
-
7
- ## Prerequisites
8
-
9
- - Familiarity with GitHub repositories and basic git workflows
10
- - Understanding of GitHub Actions concepts (workflows, triggers)
11
- - Basic knowledge of open source project conventions (CONTRIBUTING, CODE_OF_CONDUCT)
12
-
13
- ## TL;DR
14
-
15
- - The `.github` org (public repo) is the control plane for org-wide defaults: community health files, reusable workflows, profile README, and starter workflows
16
- - Real-world orgs fall into two archetypes: **focused** (few high-quality repos, e.g. oven-sh/Bun) and **ecosystem** (many small packages, e.g. unjs, sindresorhus)
17
- - Reusable workflows (`workflow_call`) are the primary mechanism for DRY CI across many repos in an org
18
- - CODEOWNERS + working groups (teams) is the dominant governance pattern for monorepos
19
- - AI usage disclosure policies are becoming a new category of org-level community health file
20
-
21
- ## Core Concepts
22
-
23
- ### The `.github` Repository as Org Control Plane
24
-
25
- Every GitHub org has a special `.github` repository that acts as the configuration and defaults layer for the entire org.
26
-
27
- **Profile README** (`profile/README.md`):
28
- - Public-facing org description shown on the org's GitHub page
29
- - Supports full markdown: badges, images, links, embedded stats
30
- - A separate `.github-private` repo can hold a `profile/README.md` visible only to org members — useful for internal runbooks and links
31
-
32
- **Default Community Health Files**:
33
- The `.github` repo (which MUST be public to cascade org-wide) can define default files that apply to every repo in the org that does not override them:
34
-
35
- | File | Purpose |
36
- |------|---------|
37
- | `CODE_OF_CONDUCT.md` | Community behavior standards |
38
- | `CONTRIBUTING.md` | How to contribute |
39
- | `FUNDING.yml` | Sponsorship links |
40
- | `GOVERNANCE.md` | Decision-making processes |
41
- | `SECURITY.md` | Vulnerability reporting policy |
42
- | `SUPPORT.md` | Where to get help |
43
- | Issue templates | Default issue forms |
44
- | PR templates | Default PR descriptions |
45
-
46
- **Important caveat**: If any individual repo has ANY files in its own `.github/ISSUE_TEMPLATE/` directory, the org-level issue template defaults no longer apply to that repo. The override is all-or-nothing per file type.
47
-
48
- **What cannot be org defaults**: License files must be defined per-repo.
49
-
50
- ### Org-Level Pinned Repositories
51
-
52
- Orgs can pin up to 6 repositories on their public profile page. A separate set of up to 6 pins can be configured for the member-only view. Use pins to surface:
53
- - The primary product repo
54
- - The standard library or docs repo
55
- - Developer tooling repos (actions, setup tools, homebrew taps)
56
- - Community/contribution entry points (roadmap, good-first-issues)
57
-
58
- ### Reusable GitHub Actions Workflows
59
-
60
- Reusable workflows eliminate CI duplication across many repos in an org. They use the `workflow_call` trigger.
61
-
62
- **Reference syntax**:
63
- ```yaml
64
- jobs:
65
- call-shared-workflow:
66
- uses: myorg/.github/.github/workflows/ci.yml@main
67
- with:
68
- node-version: "22"
69
- secrets: inherit
70
- ```
71
-
72
- **Key constraints and features**:
73
- - Maximum 10 nesting levels (reusable workflows calling other reusable workflows)
74
- - Permissions can only be maintained or reduced, never elevated
75
- - `secrets: inherit` passes the caller's secrets implicitly — preferred for org-internal workflows
76
- - Matrix strategies are supported in callers
77
- - Inputs and outputs are typed (string, boolean, number, choice)
78
-
79
- **Pattern**: Keep reusable workflows in the org `.github` repo under `.github/workflows/`, then reference `{owner}/.github/.github/workflows/{name}.yml@{ref}`.
80
-
81
- ### Starter Workflows
82
-
83
- Starter workflows appear in the "Actions" tab of new repos as suggested templates. They live in the `.github` repo under `workflow-templates/`.
84
-
85
- Each starter workflow requires two files:
86
- - `workflow-templates/{name}.yml` — the workflow definition
87
- - `workflow-templates/{name}.properties.json` — metadata (name, description, iconName, categories)
88
-
89
- **Five categories**: CI, Deployments, Automation, Code-scanning, Pages
90
-
91
- Variable substitution is supported: `$default-branch` resolves to the repo's default branch, `$cron-daily` to a daily cron expression.
92
-
93
- ### CODEOWNERS and Working Groups
94
-
95
- CODEOWNERS files define who must review changes to specific paths. The **last matching pattern wins** (bottom-to-top precedence).
96
-
97
- **Tauri's two-team pattern** (simple and effective):
98
- ```
99
- # .github/CODEOWNERS
100
- * @tauri-apps/wg-tauri
101
- .github @tauri-apps/wg-devops
102
- ```
103
-
104
- This gives the main working group ownership of all code, while the DevOps working group exclusively owns CI and tooling changes — preventing accidental breakage of infrastructure by feature contributors.
105
-
106
- **Common patterns**:
107
- - `docs/ @org/docs-team` — separate docs ownership
108
- - `*.rs @org/core-team` — language-specific ownership
109
- - `/packages/plugin-* @org/plugin-maintainers` — plugin subsystem
110
-
111
- ### GitHub Pages for Orgs
112
-
113
- | Type | Repo Name | URL |
114
- |------|-----------|-----|
115
- | Org site | `<owner>.github.io` | `https://<owner>.github.io` |
116
- | Project site | any repo | `https://<owner>.github.io/<repo>` |
117
-
118
- One org site per account. Custom domains are supported on all tiers. Free plan limits Pages to public repos.
119
-
120
- ## Real-World Org Archetypes
121
-
122
- ### The Focused Minimal Org (oven-sh / Bun)
123
-
124
- - ~7 visible repos: primary product, community list, setup action, homebrew tap, essential forks
125
- - High signal-to-noise: every repo has clear purpose
126
- - Pinned repos do the navigation work
127
- - Setup tooling (`setup-bun`) is a first-class citizen in the org
128
-
129
- **When to use**: Single primary product with companion tooling. Avoid repo sprawl that dilutes contributor attention.
130
-
131
- ### The Ecosystem Org (denoland / Deno)
132
-
133
- - 216+ repos: runtime, standard library, framework (Fresh), toolchains, bindings
134
- - Standard library (`deno_std`) is its own monorepo, separately versioned
135
- - Distinct registries: Deno now publishes std to JSR (JavaScript Registry) alongside npm
136
- - Verified domain lends authority to the org
137
-
138
- **When to use**: Platform-level products where many independent but related modules need separate release cycles.
139
-
140
- ### The Framework Org (withastro / Astro)
141
-
142
- - ~51 repos: core framework, docs site, compiler (separate language), roadmap (RFC process), deployment action, Starlight docs builder
143
- - `roadmap` repo used for public RFCs and planning — community-facing project management
144
- - pnpm workspaces for monorepo dependency management
145
- - `astro-action` for GitHub Pages deployment
146
-
147
- **When to use**: Frameworks with distinct subsystems (compiler, runtime, CLI) that benefit from separate contribution histories but shared releases.
148
-
149
- ### The Working Group Org (tauri-apps)
150
-
151
- - Working groups as GitHub Teams: `wg-tauri`, `wg-devops`
152
- - CODEOWNERS maps paths to working groups
153
- - Monorepo with clear subsystem ownership
154
-
155
- **When to use**: Mature projects with specialized contributor groups. Teams enforce review requirements automatically.
156
-
157
- ### The Utility Library Ecosystem (unjs / sindresorhus)
158
-
159
- - Dozens to hundreds of small, focused packages
160
- - Each package is its own repo with its own release cycle
161
- - Org profile README serves as the package index
162
- - Contributing to any package follows org-wide defaults from `.github`
163
-
164
- **When to use**: Utility ecosystems where each package solves one problem and has independent users.
165
-
166
- ## Contributing Guide Patterns
167
-
168
- ### Setup Complexity Tiers
169
-
170
- **Lightweight** (JS/TS projects like Astro):
171
- - Requires: Node >=22.12, pnpm >=10.28
172
- - GitHub Codespaces support for zero-install onboarding
173
- - Single `pnpm install && pnpm build` setup
174
-
175
- **Heavy** (compiled projects like Bun):
176
- - Requires: LLVM 21.1.8 (specific version), Zig (auto-installed by build script)
177
- - 10-30 minute first setup expectation set explicitly
178
- - Debug build alias (`bun bd`) documented prominently
179
-
180
- ### Priority Labels
181
-
182
- Astro uses a p1-p5 priority scale for issues. This is more expressive than simple priority/non-priority and helps maintainers triage community PRs.
183
-
184
- ### Branch Targeting Conventions
185
-
186
- Biome targets changes to `main` or `next` depending on stability. This should be explicitly documented — contributors who target the wrong branch create merge conflicts.
187
-
188
- ### AI Contribution Policies
189
-
190
- Emerging pattern (Biome, OXC): explicit AI usage disclosure in CONTRIBUTING.md:
191
-
192
- - **Biome approach**: AI disclosure as the first section — sets tone before anything else
193
- - **OXC approach**: AI accountability policy — contributor is responsible for all AI-generated code quality, must review and test it, cannot use AI generation as excuse for quality issues
194
-
195
- This is becoming a community health default to consider for new orgs in 2025+.
196
-
197
- ### Just Commands (Biome pattern)
198
-
199
- Using `just` (Justfile) for project commands standardizes the contributor experience across platforms:
200
- ```
201
- just build
202
- just test
203
- just lint
204
- ```
205
- Avoids npm script confusion and works identically in all shells.
206
-
207
- ### Changesets for Versioning
208
-
209
- Biome and others use Changesets for coordinated multi-package version management. Contributors add a changeset file alongside their PR describing the change type (major/minor/patch), and release automation assembles the changelog.
210
-
211
- ## Common Pitfalls
212
-
213
- | Pitfall | Why It Happens | How to Avoid |
214
- |---------|---------------|--------------|
215
- | Org defaults silently overridden | Repo has any file in `.github/ISSUE_TEMPLATE/` | Audit all repos; prefer org defaults where possible |
216
- | `.github` repo is private | Created as private by default | Must be public for defaults to cascade |
217
- | CODEOWNERS pattern order wrong | Assuming first match wins | Remember: last matching pattern wins |
218
- | Reusable workflow permissions escalation | Caller tries to grant more than caller has | Permissions are only reducible, never elevated |
219
- | Workflow nesting beyond 10 levels | Over-decomposed reusable workflows | Flatten; use composite actions for deeply nested logic |
220
- | Pinned repos not updated post-launch | Set once and forgotten | Review pins at each major release |
221
- | Contributing guide assumes one platform | Windows contributors fail silently | Test setup steps on Windows or document platform limits |
222
-
223
- ## Best Practices
224
-
225
- 1. **Create `.github` repo first** — Before any other repo. It's the org's foundation. (Source: GitHub Docs)
226
- 2. **Pin repos strategically** — Primary product + setup action + docs + roadmap covers most navigation needs. (Source: oven-sh, withastro patterns)
227
- 3. **Use working groups as GitHub Teams** — Map CODEOWNERS to teams, not individuals. Individuals leave; teams persist. (Source: tauri-apps)
228
- 4. **Set contributing guide setup time expectations explicitly** — "This takes 10-30 minutes" prevents contributor abandonment. (Source: Bun contributing guide)
229
- 5. **Add AI contribution policy early** — Easier to establish norms before your first AI-assisted PR than after. (Source: Biome, OXC)
230
- 6. **Use `secrets: inherit` for org-internal reusable workflows** — Avoids secret enumeration and future maintenance. (Source: GitHub Actions docs)
231
- 7. **Separate the standard library / docs into its own repo** — Deno, Astro, and others all do this. Separate release cadence, separate contributors. (Source: denoland, withastro)
232
- 8. **Use a `roadmap` repo for public RFCs** — Gives contributors a place to discuss direction without polluting the main issue tracker. (Source: withastro)
233
- 9. **Verify your org's domain** — GitHub org domain verification adds authority and enables SAML SSO. (Source: denoland example)
234
- 10. **Consider Changesets from day one** — Retrofitting automated versioning is painful; starting with it is cheap. (Source: Biome pattern)
235
-
236
- ## Org Structure Decision Guide
237
-
238
- ```
239
- Single product?
240
- ├── Yes → Focused minimal org (oven-sh model)
241
- │ Repos: product + setup-action + homebrew-tap + awesome-list
242
- └── No → Multiple products?
243
- ├── Related subsystems → Framework org (withastro model)
244
- │ Repos: core + compiler + docs + action + roadmap
245
- ├── Many small utilities → Ecosystem org (unjs model)
246
- │ Each utility = own repo, org README = index
247
- └── Large platform → Ecosystem org (denoland model)
248
- Repos: runtime + std + frameworks + toolchains
249
- ```
250
-
251
- ## Further Reading
252
-
253
- | Resource | Type | Why Recommended |
254
- |----------|------|-----------------|
255
- | [GitHub: Default community health files](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file) | Official Docs | Primary reference for `.github` repo mechanics |
256
- | [GitHub: Reusing workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows) | Official Docs | Complete `workflow_call` reference with constraints |
257
- | [GitHub: Starter workflows](https://docs.github.com/en/actions/using-workflows/creating-starter-workflows-for-your-organization) | Official Docs | How to create org-level workflow templates |
258
- | [withastro org](https://github.com/withastro) | Example | Framework org archetype with roadmap pattern |
259
- | [tauri-apps CODEOWNERS](https://github.com/tauri-apps/tauri/blob/dev/.github/CODEOWNERS) | Example | Working group CODEOWNERS pattern |
260
- | [biomejs CONTRIBUTING.md](https://github.com/biomejs/biome/blob/main/CONTRIBUTING.md) | Example | AI disclosure + just commands pattern |
261
- | [oxc-project CONTRIBUTING.md](https://github.com/oxc-project/oxc/blob/main/CONTRIBUTING.md) | Example | AI accountability policy |
262
- | [denoland org](https://github.com/denoland) | Example | Large ecosystem org structure |
263
- | [unjs org](https://github.com/unjs) | Example | Utility ecosystem, many small packages |
264
- | [GitHub: About CODEOWNERS](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) | Official Docs | CODEOWNERS syntax and precedence rules |
265
-
266
- ---
267
-
268
- *This guide was synthesized from 18 sources. See `resources/github-org-structure-patterns-sources.json` for full source list.*