Back to Docs

CLI Setup

Write RFCs as local Markdown files, then push them to DesignDoc.

Install

Homebrew (macOS / Linux)

brew install shubham030/tap/designdoc

Install script

curl -sSL https://raw.githubusercontent.com/shubham030/designdoc-cli/main/install.sh | sh

Go install

go install github.com/designdoctech/designdoc/cmd/cli@latest

Manual download

Download the latest binary from GitHub Releases.

Login

Authenticate with your DesignDoc account:

designdoc login

This opens your browser for Auth0 login. After authenticating, your token and orgs are saved to ~/.designdoc/config.yaml.

Organization Management

# List your orgs (* = active)
designdoc org list

# Switch active org
designdoc org switch my-team

# Set a short alias
designdoc org alias my-long-org-name mt
designdoc org switch mt

# Show current org
designdoc org current

Create an RFC

1. Scaffold from template

designdoc rfc init --project backend my-proposal.md

This fetches your org's default template and creates a local Markdown file with YAML front matter pre-filled.

2. Edit the file

Open the file in your editor and fill in the sections:

---
title: "API Rate Limiting"
project: backend
tags: [api, security]
summary: "Add rate limiting to public endpoints"
---

## Summary

Add rate limiting to prevent abuse...

## Motivation

Our public API has no rate limits...

## Detailed Design

### Token bucket algorithm
...

3. Push to DesignDoc

designdoc rfc push my-proposal.md

On first push, the CLI creates the RFC on the server and writes rfc_id and numberback into your file's front matter. Subsequent pushes update the existing RFC.

Browse RFCs

# List all RFCs
designdoc rfc list

# Filter by status
designdoc rfc list --status in_review

# View an RFC in your terminal
designdoc rfc show RFC-001

Front Matter Reference

FieldRequiredDescription
titleYesRFC title
projectYesProject slug
tagsNoArray of tags
summaryNoOne-line summary
visibilityNopublic, org_only (default), private
rfc_idAutoSet by CLI after first push
numberAutoSet by CLI after first push

Environment Variables

VariableDescription
DESIGNDOC_API_KEYAPI key (overrides config token)
DESIGNDOC_ORGOverride active org slug
DESIGNDOC_API_URLOverride API URL