@@ -15,11 +15,13 @@ The Coder Registry is a collection of Terraform modules that extend Coder worksp
1515## Setup
1616
1717### Prerequisites
18+
1819- Git and GitHub account
1920- Basic Terraform knowledge (for module development)
2021- Docker (for running tests)
2122
2223### Install Dependencies
24+
2325``` bash
2426# Install Bun (test runner)
2527curl -fsSL https://bun.sh/install | bash
@@ -65,6 +67,7 @@ mkdir -p registry/[your-username]
6567```
6668
6769Create ` registry/[your-username]/README.md ` :
70+
6871``` markdown
6972---
7073display_name: "Your Name"
@@ -86,6 +89,7 @@ cd registry/[your-username]/modules/[module-name]
8689### 3. Build Your Module
8790
8891** Edit ` main.tf ` ** - Your Terraform code:
92+
8993``` terraform
9094terraform {
9195 required_version = ">= 1.0"
@@ -109,7 +113,8 @@ resource "coder_script" "install" {
109113```
110114
111115** Update ` README.md ` ** - Add proper frontmatter:
112- ``` markdown
116+
117+ ```` markdown
113118---
114119display_name: "Tool Name"
115120description: "Brief description of what this module does"
@@ -132,7 +137,9 @@ module "tool" {
132137 agent_id = coder_agent.main.id
133138}
134139```
135- ```
140+ ````
141+
142+ ````
136143
137144**Write tests in `main.test.ts`**:
138145```typescript
@@ -150,7 +157,7 @@ describe("module-name", () => {
150157 });
151158 });
152159});
153- ```
160+ ````
154161
155162### 4. Test and Submit
156163
@@ -182,18 +189,21 @@ find registry -name "*[module-name]*" -type d
182189### 2. Make Your Changes
183190
184191** For bug fixes:**
192+
185193- Reproduce the issue
186194- Fix the code in ` main.tf `
187195- Add/update tests
188196- Update documentation if needed
189197
190198** For new features:**
199+
191200- Add new variables with sensible defaults
192201- Implement the feature
193202- Add tests for new functionality
194203- Update README with new variables
195204
196205** For documentation:**
206+
197207- Fix typos and unclear explanations
198208- Add missing variable documentation
199209- Improve usage examples
@@ -223,11 +233,13 @@ bun test
223233### Create a Pull Request
224234
2252351 . ** Fork and branch:**
236+
226237 ``` bash
227238 git checkout -b fix/module-name-issue
228239 ```
229240
2302412 . ** Commit with clear messages:**
242+
231243 ``` bash
232244 git commit -m " Fix version parsing in module-name"
233245 ```
@@ -238,17 +250,21 @@ bun test
238250 - Any breaking changes
239251
240252### PR Template
253+
241254``` markdown
242255## Description
256+
243257Brief description of changes.
244258
245259## Type of Change
260+
246261- [ ] New module
247- - [ ] Bug fix
262+ - [ ] Bug fix
248263- [ ] Feature enhancement
249264- [ ] Documentation
250265
251266## Testing
267+
252268- [ ] Tests pass (`bun test`)
253269- [ ] Code formatted (`bun run fmt`)
254270```
@@ -258,32 +274,36 @@ Brief description of changes.
258274## Requirements
259275
260276### Every Module Must Have
277+
261278- ` main.tf ` - Terraform code
262279- ` main.test.ts ` - Working tests
263280- ` README.md ` - Documentation with frontmatter
264281
265282### README Frontmatter
283+
266284``` yaml
267285---
268- display_name : " Module Name" # Required - Name shown on Registry website
269- description : " What it does" # Required - Short description for Registry
270- icon : " path/to/icon.svg" # Required - Path to icon file
286+ display_name : " Module Name" # Required - Name shown on Registry website
287+ description : " What it does" # Required - Short description for Registry
288+ icon : " path/to/icon.svg" # Required - Path to icon file
271289maintainer_github : " your-username" # Required - Your GitHub username
272- verified : false # Optional - Set by Coder maintainers only
273- tags : ["tag1", "tag2"] # Required - Array of descriptive tags
274- partner_github : " partner-name" # Optional - For official partnerships only
290+ verified : false # Optional - Set by Coder maintainers only
291+ tags : ["tag1", "tag2"] # Required - Array of descriptive tags
292+ partner_github : " partner-name" # Optional - For official partnerships only
275293---
276294```
277295
278296### README Requirements
279297
280298All README files must follow these rules:
299+
281300- Must have frontmatter section with proper YAML
282301- Exactly one h1 header directly below frontmatter
283302- When increasing header levels, increment by one each time
284303- Use ` tf ` instead of ` hcl ` for code blocks
285304
286305### Best Practices
306+
287307- Use descriptive variable names and descriptions
288308- Include helpful comments
289309- Test all functionality
@@ -306,12 +326,14 @@ go build ./cmd/readmevalidation && ./readmevalidation
306326After your PR is merged, maintainers will handle the release:
307327
3083281 . ** Create release tags** for changed modules:
329+
309330 ``` bash
310331 git tag -a " release/$namespace /$module /v$version " -m " Release $namespace /$module v$version "
311332 git push origin release/$namespace /$module /v$version
312333 ```
313334
3143352 . ** Version numbers** follow semantic versioning:
336+
315337 - ** Patch** (1.2.3 → 1.2.4): Bug fixes
316338 - ** Minor** (1.2.3 → 1.3.0): New features, adding inputs
317339 - ** Major** (1.2.3 → 2.0.0): Breaking changes (removing inputs, changing types)
@@ -323,6 +345,7 @@ After your PR is merged, maintainers will handle the release:
323345## Reporting Issues
324346
325347When reporting bugs, include:
348+
326349- Module name and version
327350- Expected vs actual behavior
328351- Minimal reproduction case
0 commit comments