README
¶
devex
Developer Experience Tools - A unified CLI for common developer operations.
Installation
Add the following to your mise.toml file:
[tools]
"github:project-init/devex" = "latest" # We suggest pinning a version here
This will install the pre-compiled binary from GitHub releases.
Then run:
mise install
Usage
The devex CLI provides a unified interface for all developer experience tools:
devex <subcommand> [options]
Run devex --help to see all available subcommands, or devex <subcommand> --help for detailed help on a specific command.
Subcommands
Localize
Manage gotext translations and generate platform localization bundles.
Usage:
devex localize audit
devex localize mobile
devex localize translate
The mobile command generates localization bundles for the platforms present in its
configuration. The currently supported iOS generator distills registered strings from each
out.gotext.json catalog into an l10n-<locale>.json bundle. It also validates registry
coverage, placeholders, and Swift translation-key usage before replacing existing bundles.
Configure repository paths under .localize/*.yaml:
localize:
localesDir: internal/translations/locales
mobile:
sourceLanguage: en-US
registryPath: internal/translations/mobileregistry/registry.go
ios:
sourceDir: ios/ProjectInit
outputDir: ios/ProjectInit/Resources/l10n
SRE
Site Reliability Engineering toolbox for common operational tasks.
Available Tools:
- keygen - Generate API keys based on configuration
- postgres - PostgreSQL operations and access management
- release - Git tag and release management
- analyze - Code analysis operations
- echo - Print and transform arguments
Usage:
devex sre <tool> [args]
Configuration:
Create a .sre directory in your project root to store configuration files. The tool looks for this directory by default, but you can override it with the --configDir flag.
Additional Dependencies:
Some SRE tools require AWS CLI:
[tools]
awscli = "latest" # Required for some postgres operations
Examples:
# Generate an API key
devex sre keygen
# Access a postgres database
devex sre postgres access
# Create a new release
devex sre release
Workplan
Generate and publish workplan templates for investigating features or problems. Workplans help estimate the effort needed to complete a task and can be published directly to JIRA.
Usage:
devex workplan generate <directory> <title>
devex workplan publish <workplan_path>
Generate Example:
devex workplan generate docs/investigations/infrastructure/moveToProjectInitStack example_title
This will generate a workplan template in the specified directory:
<directory>
└── <yyyy>_<m>_<d>_example_title
├── workplan.yaml
└── problem.md
Publishing to JIRA:
Set the following environment variables (consider adding them to your shell profile):
export JIRA_URL=https://yourdomain.atlassian.net
export JIRA_EMAIL=your_jira_email
export JIRA_API_KEY=your_api_key
Then publish:
devex workplan publish docs/investigations/infrastructure/moveToProjectInitStack/2026_5_3_example_title/workplan.yaml
Getting Your JIRA API Key:
- Navigate to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Give it a name and click "Create"
- Copy the token and set it in your environment variables
Why JIRA?
JIRA is the most common work tracking tool used by the project-init team. While we don't claim it's the best tool, it's what we have expertise with and have built integration for.
Contributions
A lightweight, opinionated contribution signal generator for GitHub-based engineering teams. Analyzes PR and review activity over configurable time windows (10 / 30 / 90 days) and produces structured output for evaluating contribution patterns.
What It Provides:
- PR authorship counts
- PR review counts
- PR-to-review ratios
- Total merge time
- Average time-to-merge
- Weighted contribution scoring
- Share breakdowns across contributors and repositories
Philosophy:
This is NOT a replacement for leadership judgment.
It IS a visibility tool.
For design intent and cultural philosophy, see PHILOSOPHY.md
Usage:
# Collect PR data
devex contributions collect <config_file>
# Generate signal output
devex contributions signal <config_file>
Example:
devex contributions collect contributions_config.yaml
devex contributions signal contributions_config.yaml
Output:
User signal output:
user,weighted_total,weighted_prs,weighted_reviews,weighted_pr_share,weighted_review_share,num_prs,num_reviews,TotalTimeToMerge,average_days_to_merge
user1,107.98,73.58,34.40,0.68,0.32,74,172,724538000000000,0.11
user2,49.21,39.61,9.60,0.80,0.20,42,48,4127456000000000,1.14
Repository signal output:
repo,weighted_total,weighted_prs,weighted_reviews,weighted_pr_share,weighted_review_share,num_prs,num_reviews,TotalTimeToMerge,average_days_to_merge
business-platform,72.69,45.09,27.60,0.62,0.38,48,138,5021492000000000,1.21
admin-platform,48.03,39.63,8.40,0.83,0.17,40,42,637432000000000,0.18
These CSV outputs are easily imported into spreadsheets or analyzed with AI tools.
Configuration:
See example_config.yaml for a sample configuration file.
Components
Generate component skeleton code from YAML configuration files. Currently focused on database components for PostgreSQL-based Go services.
Usage:
devex components <configuration_file_path>
Example:
devex components .components
Configuration Example:
outputDirectory: "gen"
db:
schemaName: data_platform
See example_config.yaml for a complete example.
DB Components:
The DB component generator outputs:
- User setup scripts
- Schema definitions
- IAM permissions setup
- Default migrations
- Post-release scripts
- sqlc configuration for Go service integration
All setup is optimized for PostgreSQL clusters.
Additional Resources
Development
Run tests:
mise test
Build locally:
go build -o devex ./cmd/devex
Run linting:
mise lint
Documentation
¶
There is no documentation for this package.