You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: add local development and testing to maintainer's guide (#77)
* docs: add local development & testing guide
Document how maintainers run the test suite (make targets) and load the
plugin locally in Claude Code (claude --plugin-dir) and Cursor (make
cursor-install), and cross-reference it from the Releases step that already
assumes tests are run locally.
* docs: simplify setup sentence to venv + deps
* docs: genericize test descriptions away from Ollama specifics
* docs: refine testing section wording and .env setup steps
* docs: block-format the `claude plugin validate` command
Applies Eden's suggestion from PR #77 review.
Co-authored-by: Eden Zimbelman <18134219+zimeg@users.noreply.github.com>
* docs: add Cursor to the tools list
Responds to Eden's question on PR #77 — Cursor is a supported alternative
to Claude Code for verifying skills locally.
---------
Co-authored-by: Eden Zimbelman <18134219+zimeg@users.noreply.github.com>
Copy file name to clipboardExpand all lines: .github/maintainers_guide.md
+81-1Lines changed: 81 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,8 @@ Maintaining this repo requires:
13
13
-**[Claude Code][claude-code]**: the primary development and maintenance tool.
14
14
Most tasks (authoring skills, reviewing diffs) are performed through Claude
15
15
Code rather than traditional CLI tooling.
16
+
-**[Cursor][cursor]**: an alternative agentic coding environment. Useful for
17
+
verifying that skills and commands work outside Claude Code before release.
16
18
-**Git**: standard version control.
17
19
-**[GitHub CLI (`gh`)][gh-cli]**: for creating PRs as drafts and managing
18
20
issues.
@@ -44,6 +46,83 @@ source .venv/bin/activate
44
46
45
47
---
46
48
49
+
## Local Development & Testing
50
+
51
+
Before you release (or open a PR), exercise your changes locally: run the test
52
+
suite, and load the plugin into Claude Code or Cursor to try the skills and
53
+
commands by hand.
54
+
55
+
### Setup
56
+
57
+
Run the one-time setup, which creates the virtualenv and installs the test and
58
+
lint dependencies (requires Python 3.14+, see above):
59
+
60
+
```sh
61
+
make install
62
+
```
63
+
64
+
The tests read configuration from environment variables. Copy the example file
65
+
and fill in what you need — each variable is documented inline, and the
66
+
`Makefile` auto-loads `.env`:
67
+
68
+
```sh
69
+
cp .env.example .env
70
+
vim .env
71
+
# Set the environment variables
72
+
```
73
+
74
+
### Running the tests
75
+
76
+
Always use the `make` targets — never invoke `pytest`, `ruff`, or `python`
77
+
directly. The targets manage the virtualenv, load `.env`, and set up the test
78
+
dependencies for you.
79
+
80
+
```sh
81
+
make test-unit # fast structural + frontmatter checks (this is what CI runs)
82
+
make test-eval # LLM-judged skill evaluations (local only)
83
+
make test# both
84
+
make lint # Ruff linter (line-length 120)
85
+
make format # Ruff auto-format + fix
86
+
```
87
+
88
+
### Testing in Claude Code
89
+
90
+
Load your local changes into Claude Code for a single session with the
91
+
`--plugin-dir` flag:
92
+
93
+
```sh
94
+
claude --plugin-dir ./
95
+
```
96
+
97
+
This loads the `slack` plugin from your checkout — its skills and commands, and
98
+
the HTTP MCP server from `.mcp.json`. If you already have the published
99
+
`slack` plugin installed, the local copy takes precedence **for that session
100
+
only**: nothing is written to your settings, and the installed version is
101
+
untouched when you exit. After editing a skill or command, run `/reload-plugins`
102
+
inside the session to pick up the change without restarting.
103
+
104
+
Check the plugin's structure without launching a session:
105
+
106
+
```sh
107
+
claude plugin validate
108
+
```
109
+
110
+
### Testing in Cursor
111
+
112
+
Install the plugin into your local Cursor, then reload plugins in Cursor to pick
113
+
up the changes:
114
+
115
+
```sh
116
+
make cursor-install
117
+
```
118
+
119
+
This copies the plugin into `~/.cursor/plugins/slack@local` and registers it.
120
+
121
+
To remove it, run `make cursor-uninstall`. (`make clean` also runs the Cursor
122
+
uninstall, in addition to removing the virtualenv and other generated files.)
123
+
124
+
---
125
+
47
126
## Versioning
48
127
49
128
Follow the [conventional commit specification][conv-commits]. PR titles and commit messages use prefixes like `feat:`, `fix:`, `chore:`, `docs:`, etc. First letter after the prefix is lowercase unless it's a proper noun.
@@ -80,7 +159,7 @@ Releasing can feel intimidating at first, but don't fret! Venture on!
80
159
81
160
New official package versions are published when the release PR created from changesets is merged. Follow these steps to build confidence:
82
161
83
-
1.**Run the tests locally**: Before merging the release PR please run all the tests especially the eval ones. If they no longer pass we may need fix it before releasing the changes.
162
+
1.**Run the tests locally**: Before merging the release PR please run all the tests (see [Local Development & Testing](#local-development--testing)), especially the eval ones. If they no longer pass we may need fix it before releasing the changes.
84
163
85
164
2.**Check GitHub**: Please check if issues or pull requests are still open either decide to postpone the release or save those changes for a future update.
86
165
@@ -123,6 +202,7 @@ Patch and minor updates are auto-approved and auto-merged via the
0 commit comments