Repository navigation
Improve onboarding: agent-driven setup, prebuilt wheels, tests, CI - #1
Merged
Merged
Conversation
added 3 commits
June 20, 2026 11:40
Make FastContext installation easier across Claude Code, OpenCode, and Codex CLI. The skill can be added with `npx add skill`, but the MCP server install was harder — requiring manual curl|bash and config edits. Agent-driven setup skill: - Rewrite fastcontext-setup/SKILL.md as agent-executable procedure (guard check, install, verify, report) instead of user-facing how-to - Add architecture diagram explaining the skill/MCP two-part system Prebuilt wheel releases: - Add src/fastcontext_mcp/release.py to resolve/download wheels from GitHub releases with graceful fallback to git source - Add src/fastcontext_mcp/configwriter.py extracting MCP config + skill file install logic into a testable module - install.sh now prefers prebuilt wheel by default (--from-source to override) and supports --install-skills to also install skill files - Add .github/workflows/release.yml to build+publish wheels on tag push Documentation: - Rewrite README with architecture overview, one-command install, and prebuilt wheel instructions - Add how-it-works section to fastcontext/SKILL.md - Document --install-skills and --from-source in setup skill Tests + CI: - Add 109 tests covering configwriter (MCP config writing for all three tools, skill file install, symlinks), release (wheel resolution with mocked GitHub API), skill content (frontmatter, agent-driven sections, architecture docs), and install.sh (syntax, flags, help) - Add .github/workflows/ci.yml running tests + ruff + shellcheck - Add ruff + pytest config to pyproject.toml - Fix pre-existing lint issues in server.py (unused import, f-string)
Address PR review feedback: 1. mktemp --suffix macOS incompatibility (critical): - macOS BSD mktemp doesn't support --suffix - Use mktemp -d + filename instead (portable) - Add test_uses_portable_mktemp to guard against regression 2. Prebuilt wheel bootstrap (items 1-2): - Inline wheel resolution using stdlib only (json, re, urllib) - No import from fastcontext_mcp.release in the bootstrap phase - Works on first install when the package isn't installed yet - release.py kept for programmatic use after install - Add test_wheel_resolution_is_stdlib_only to enforce this 3. Error handling for step 4: - Add import check before configwriter usage - Clear error message if package install failed 4. Codex skill dirs comment: - Document that Codex CLI has no skill directory system 5. urlretrieve → urlopen+write: - Replace semi-deprecated urlretrieve with urlopen + write - Consistent with _api_get pattern - Update download_wheel tests accordingly
The setup-uv action with enable-cache defaults to looking for uv.lock, which doesn't exist in this project (we use pyproject.toml). Point the cache dependency glob at pyproject.toml instead.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes FastContext installation easier across Claude Code, OpenCode, and Codex CLI. The skill was easy (
npx add skill), but the MCP server install was harder — requiring manualcurl|bashand config edits. This PR closes that gap with agent-driven setup, prebuilt wheels, and comprehensive tests.Changes
Agent-driven setup skill
skills/fastcontext-setup/SKILL.mdas an agent-executable procedure (guard check → install → verify → report) instead of a user-facing how-to. The user just says "install FastContext" and the agent runs the commands.Prebuilt wheel releases
src/fastcontext_mcp/release.py— resolves and downloads prebuilt wheels from GitHub releases with graceful fallback to git source.src/fastcontext_mcp/configwriter.py— extracts MCP config + skill file install logic into a testable module (previously inline Python in install.sh).scripts/install.shnow:--from-sourceto override)--install-skillsto also install skill files + symlinks--helpwith full usage docs.github/workflows/release.yml— builds and publishes wheels to GitHub Releases on tag push (v*).Documentation
README.mdwith architecture overview, one-command install, and prebuilt wheel instructions.skills/fastcontext/SKILL.md.--install-skillsand--from-sourceflags in setup skill.Tests + CI (109 tests, all passing)
tests/test_configwriter.py— MCP config writing for all three tools (Claude/OpenCode/Codex), idempotency, skill file install, symlinks.tests/test_release.py— wheel resolution with mocked GitHub API, fallback logic, download.tests/test_skills.py— skill content validation (frontmatter, agent-driven sections, architecture docs, link consistency).tests/test_install_script.py— install.sh syntax, flags, help output, content checks..github/workflows/ci.yml— runs tests + ruff + shellcheck on every push/PR.pyproject.toml.server.py(unusedContextimport, f-string without placeholders).Install flow (after this PR)
Test results
To create the first release
After merge, tag and push to trigger the release workflow:
This builds the wheel and attaches it to a GitHub Release. The install script will then download it automatically.