diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index fa1c7e3..969a04e 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,29 +1,65 @@
## Overview
+
+
…
## Related
…
+Delete the bullets you don't need. Any ticket / cross-repo links go here. Examples:
+
+- [CMD-XYZ](https://tacc-main.atlassian.net/browse/CMD-XYZ)
+- requires https://github.com/TACC/Core-Styles/pull/NNN
+- required by https://github.com/TACC/Core-CMS/pull/NNN
+-->
+
+- …
## Changes
-…
+
+
+- …
## Testing
-1.
+
+
+1.
+
-## Screenshots
+## UI
+
+
…
diff --git a/.gitmessage b/.gitmessage
new file mode 100644
index 0000000..515eac0
--- /dev/null
+++ b/.gitmessage
@@ -0,0 +1,18 @@
+# type(scope)!: short summary
+#
+# Types: feat, fix, docs, style, refactor, perf, test, chore, build, ci
+# Scope (optional): describes area, e.g. api, ui, auth, deps
+# ! (optional): marks breaking changes
+#
+# Examples:
+# feat(ui)!: add new Paginator component
+# chore(deps): update
+# style: delete excess whitespace
+#
+# Body (optional):
+# what changed (1 sentence)
+# (if relevant) important decisions/context (succinct bullets)
+#
+# Footer (optional):
+# BREAKING CHANGE: describe breaking change
+# Closes #123, Relates-to #456
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..2835125
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,33 @@
+# How to Contribute
+
+## Linting and Formatting
+
+Not standardized.
+
+## Best Practices
+
+- [Sign your commits.](https://help.github.com/en/github/authenticating-to-github/managing-commit-signature-verification)
+- [Learn Markdown.](https://github.github.com/gfm/)
+
+## Development Workflow
+
+We use a modified version of [GitFlow](https://datasift.github.io/gitflow/IntroducingGitFlow.html).
+
+- "feature branches" have a specific prefix:
+ - `feat/` for features and updates
+ - `fix/` for bugfixes and hotfixes
+ - `refactor/` for large internal changes
+ - `chore/` for no-op changes
+ - `docs/` for documentation
+ - `perf/` for performance improvements
+ - `test/` for test case updates
+ - or other "types" from [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary)
+- "develop" branch is usually `main`,\
+ but can exist as a long-lived multi-feature branch prefixed with `dev/`
+- "release branches" (as needed) are prefixed with `release/`
+- "hotfix branches" are prefixed `fix/`
+- "master branch" is always `main`
+
+## Release Workflow
+
+Follow [PUBLISHING.md](PUBLISHING.md) instructions.
diff --git a/PUBLISHING.md b/PUBLISHING.md
new file mode 100644
index 0000000..4b54fd4
--- /dev/null
+++ b/PUBLISHING.md
@@ -0,0 +1,7 @@
+# How to Publish
+
+1. Update version via:\
+ `npm version vN.N.N`\
+ (where `N.N.N` is the version tag)
+2. [Create release and tag on GitHub.](https://github.com/TACC/Core-Components/releases/new)\
+ This triggers CI to build and publish the package to NPM automatically.