githits 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.claude-plugin/marketplace.json +21 -3
  2. package/.claude-plugin/plugin.json +16 -2
  3. package/.codex-plugin/plugin.json +42 -0
  4. package/.cursor-plugin/plugin.json +29 -0
  5. package/.mcp.json +2 -2
  6. package/.plugin/plugin.json +16 -2
  7. package/AGENTS.md +201 -0
  8. package/README.md +23 -6
  9. package/dist/cli.js +30 -24
  10. package/dist/index.js +1 -1
  11. package/dist/shared/{chunk-ffqa4bpw.js → chunk-mysf4hjt.js} +18 -3
  12. package/dist/shared/{chunk-pwfqg90m.js → chunk-ncsgqtj1.js} +1 -1
  13. package/dist/shared/{chunk-qh0kv76d.js → chunk-p8dg49ey.js} +1 -1
  14. package/gemini-extension.json +2 -3
  15. package/mcp_config.json +7 -0
  16. package/package.json +23 -14
  17. package/plugin.json +3 -0
  18. package/server.json +5 -2
  19. package/skills/githits-code/SKILL.md +10 -7
  20. package/skills/githits-code/references/code-and-docs.md +3 -1
  21. package/skills/githits-onboarding/SKILL.md +54 -10
  22. package/GEMINI.md +0 -83
  23. package/commands/example.md +0 -27
  24. package/commands/help.md +0 -52
  25. package/commands/login.md +0 -36
  26. package/commands/logout.md +0 -16
  27. package/commands/search.md +0 -27
  28. package/commands/status.md +0 -22
  29. package/plugins/claude/.claude-plugin/plugin.json +0 -12
  30. package/plugins/claude/.mcp.json +0 -8
  31. package/plugins/claude/commands/example.md +0 -27
  32. package/plugins/claude/commands/help.md +0 -52
  33. package/plugins/claude/commands/login.md +0 -36
  34. package/plugins/claude/commands/logout.md +0 -16
  35. package/plugins/claude/commands/search.md +0 -27
  36. package/plugins/claude/commands/status.md +0 -22
  37. package/plugins/claude/skills/githits-mcp/SKILL.md +0 -40
  38. package/plugins/claude/skills/onboarding/SKILL.md +0 -123
  39. package/plugins/claude/skills/search/SKILL.md +0 -44
@@ -6,12 +6,12 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "The code context layer for AI coding agents",
9
- "version": "0.6.6"
9
+ "version": "0.7.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "githits",
14
- "source": "./plugins/claude",
14
+ "version": "0.7.0",
15
15
  "description": "The code context layer for AI coding agents",
16
16
  "author": {
17
17
  "name": "GitHits"
@@ -19,7 +19,25 @@
19
19
  "homepage": "https://githits.com",
20
20
  "repository": "https://github.com/githits-com/githits-cli",
21
21
  "license": "Apache-2.0",
22
- "keywords": ["code-search", "open-source", "examples"],
22
+ "keywords": [
23
+ "githits",
24
+ "context layer",
25
+ "public open-source",
26
+ "open-source code",
27
+ "code search",
28
+ "package documentation",
29
+ "documentation search",
30
+ "package metadata",
31
+ "vulnerabilities",
32
+ "changelogs",
33
+ "dependency graphs",
34
+ "upgrade evidence",
35
+ "implementation examples"
36
+ ],
37
+ "source": {
38
+ "source": "url",
39
+ "url": "https://github.com/githits-com/githits-cli.git"
40
+ },
23
41
  "category": "developer-tools"
24
42
  }
25
43
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githits",
3
- "version": "0.6.6",
3
+ "version": "0.7.0",
4
4
  "description": "The code context layer for AI coding agents",
5
5
  "author": {
6
6
  "name": "GitHits"
@@ -8,5 +8,19 @@
8
8
  "homepage": "https://githits.com",
9
9
  "repository": "https://github.com/githits-com/githits-cli",
10
10
  "license": "Apache-2.0",
11
- "keywords": ["githits", "code-examples", "search", "mcp", "ai"]
11
+ "keywords": [
12
+ "githits",
13
+ "context layer",
14
+ "public open-source",
15
+ "open-source code",
16
+ "code search",
17
+ "package documentation",
18
+ "documentation search",
19
+ "package metadata",
20
+ "vulnerabilities",
21
+ "changelogs",
22
+ "dependency graphs",
23
+ "upgrade evidence",
24
+ "implementation examples"
25
+ ]
12
26
  }
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "githits",
3
+ "version": "0.7.0",
4
+ "description": "The code context layer for AI coding agents",
5
+ "author": {
6
+ "name": "GitHits"
7
+ },
8
+ "homepage": "https://githits.com",
9
+ "repository": "https://github.com/githits-com/githits-cli",
10
+ "license": "Apache-2.0",
11
+ "keywords": [
12
+ "githits",
13
+ "context layer",
14
+ "public open-source",
15
+ "open-source code",
16
+ "code search",
17
+ "package documentation",
18
+ "documentation search",
19
+ "package metadata",
20
+ "vulnerabilities",
21
+ "changelogs",
22
+ "dependency graphs",
23
+ "upgrade evidence",
24
+ "implementation examples"
25
+ ],
26
+ "skills": "./skills/",
27
+ "mcpServers": "./.mcp.json",
28
+ "interface": {
29
+ "displayName": "GitHits",
30
+ "shortDescription": "The code context layer for AI coding agents",
31
+ "longDescription": "Search public open-source code, documentation, package metadata, vulnerabilities, changelogs, dependencies, and implementation examples.",
32
+ "developerName": "GitHits",
33
+ "category": "Developer Tools",
34
+ "capabilities": ["Code Search", "Documentation Search", "Package Research"],
35
+ "websiteURL": "https://githits.com",
36
+ "defaultPrompt": [
37
+ "Use GitHits to inspect this project's open-source dependencies.",
38
+ "Find source-backed examples for this implementation.",
39
+ "Research package documentation and upgrade risks."
40
+ ]
41
+ }
42
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "githits",
3
+ "version": "0.7.0",
4
+ "description": "The code context layer for AI coding agents",
5
+ "author": {
6
+ "name": "GitHits"
7
+ },
8
+ "homepage": "https://githits.com",
9
+ "repository": "https://github.com/githits-com/githits-cli",
10
+ "license": "Apache-2.0",
11
+ "keywords": [
12
+ "githits",
13
+ "context layer",
14
+ "public open-source",
15
+ "open-source code",
16
+ "code search",
17
+ "package documentation",
18
+ "documentation search",
19
+ "package metadata",
20
+ "vulnerabilities",
21
+ "changelogs",
22
+ "dependency graphs",
23
+ "upgrade evidence",
24
+ "implementation examples"
25
+ ],
26
+ "skills": "skills",
27
+ "mcpServers": ".mcp.json",
28
+ "logo": "github-githits.png"
29
+ }
package/.mcp.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "githits": {
4
- "command": "npx",
5
- "args": ["-y", "githits@latest", "mcp", "start"]
4
+ "type": "http",
5
+ "url": "https://mcp.githits.com"
6
6
  }
7
7
  }
8
8
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githits",
3
- "version": "0.6.6",
3
+ "version": "0.7.0",
4
4
  "description": "The code context layer for AI coding agents",
5
5
  "author": {
6
6
  "name": "GitHits"
@@ -8,5 +8,19 @@
8
8
  "homepage": "https://githits.com",
9
9
  "repository": "https://github.com/githits-com/githits-cli",
10
10
  "license": "Apache-2.0",
11
- "keywords": ["githits", "code-examples", "search", "mcp", "ai"]
11
+ "keywords": [
12
+ "githits",
13
+ "context layer",
14
+ "public open-source",
15
+ "open-source code",
16
+ "code search",
17
+ "package documentation",
18
+ "documentation search",
19
+ "package metadata",
20
+ "vulnerabilities",
21
+ "changelogs",
22
+ "dependency graphs",
23
+ "upgrade evidence",
24
+ "implementation examples"
25
+ ]
12
26
  }
package/AGENTS.md ADDED
@@ -0,0 +1,201 @@
1
+ # githits Agent Instructions
2
+
3
+ GitHits companion for the backend - provides MCP server and command-line tools for code example search.
4
+
5
+ We strive to produce high quality code that can easily be maintained. Focus is on long term development speed, not on quick wins.
6
+
7
+ This document contains the most important instructions that need to be kept always in context.
8
+
9
+ ## General
10
+
11
+ - Use very concise output and neutral tone
12
+ - If unclear about anything or stuck, please stop and ask for clarification
13
+ - Always verify assumptions
14
+ - Don't jump into coding, plan and assess the impact first
15
+ - Read more detailed documentation when needed
16
+ - Remember your MCP tools and use them when needed
17
+
18
+ ## Architecture
19
+
20
+ Philosophy: "Create architecture that is performant and easy to test"
21
+
22
+ - Focus on building structures that are performant and scalable
23
+ - Build architecture that is easy to test
24
+ - Isolate functionality into sensible small modules
25
+ - Follow single responsibility principle
26
+ - Prefer public helper modules to lots of private methods
27
+ - Use dependency injection for external services (REST client, etc.)
28
+ - Do not eagerly validate network/proxy/environment configuration while constructing command dependencies when the command has local-only or no-network paths. Defer validation until the first network operation and add regression tests for malformed env values on local paths.
29
+ - For MCP/agent-facing tools, avoid coupled optional flags and default-true booleans. Design schemas for real agent calls, including empty strings, empty arrays, and explicit `false` values.
30
+ - For GraphQL/API-backed tools, treat minimal data fetching as part of the tool contract. Before adding or changing selected fields, compare the query against every consumer (text, verbose, JSON, MCP, CLI, and internal callers), use conditional fields or separate queries for mode-specific data, and add tests that assert the wire variables/selections for compact and detailed modes.
31
+
32
+ See `docs/guidelines/ARCHITECTURAL_GUIDELINES.md` for detailed planning checklist and design principles.
33
+
34
+ ## Testing
35
+
36
+ Philosophy: "If it is not tested, it is likely broken"
37
+
38
+ **Critical Rules:**
39
+
40
+ - Use `bun test` for running tests
41
+ - Use `bun run smoke:mcp` and `bun run smoke:cli` when changing MCP tools, CLI commands, shared formatters, auth/error envelopes, or MCP/CLI parity behavior. These are live-capable local suites, not the normal unit suite; they must pass unauthenticated by validating auth handling, and provide deeper coverage when authenticated. After building, also run `bun run smoke:cli:built` and `bun run smoke:mcp:built` when changing smoke launch behavior or CI product validation; these secret-free modes execute `dist/cli.js` under Node.
42
+ - Use `bun run agent:e2e` when changing MCP instructions, tool descriptions, or agent-facing tool behavior. This is a human/agent-driven qualitative eval, not a deterministic CI gate. Pick targeted workloads from `eval/agentic/README.md`; run both Claude and Codex for broad instruction changes when practical. Inspect `tool-calls.json` and `final.json` for actual tool use, `toolIssues`, `instructionIssues`, and usefulness, not just harness pass/fail.
43
+ - Maintain smoke coverage when adding or changing user-facing tools/commands. Prefer structural UX assertions over brittle snapshots, and keep MCP `format: "json"` and CLI `--json` behavior aligned.
44
+ - When changing GraphQL/API selections, add regression tests for over-fetch controls (for example `@include` variables, body omission, field lists, or query builders) and live-smoke the affected CLI/MCP surfaces when authenticated access is available.
45
+ - Keep tests async and isolated
46
+ - Mock services at the interface level using factory functions
47
+ - Use mock factories from `test-helpers.ts` (e.g., `createMockGitHitsService()`, `createMockAuthService()`)
48
+ - Test behavior, not implementation - focus on inputs and outputs
49
+ - Test only one layer at a time - mock dependencies
50
+ - When tests simulate another platform, simulate that platform's path semantics too. Use `path.win32` for Windows paths and avoid mixed literals like `C:\\Users\\me/app`; mixed separators can make tests pass while real Windows logic is broken.
51
+
52
+ **Test Structure:**
53
+
54
+ ```typescript
55
+ import { describe, expect, it, mock } from "bun:test";
56
+ import { createMockGitHitsService } from "./test-helpers.js";
57
+
58
+ describe("myTool", () => {
59
+ it("does something", async () => {
60
+ const mockService = createMockGitHitsService({
61
+ /* overrides */
62
+ });
63
+ // test...
64
+ });
65
+ });
66
+ ```
67
+
68
+ See `docs/guidelines/TESTING.md` for comprehensive patterns.
69
+
70
+ ## Development Workflow (Docs-driven)
71
+
72
+ - Proposals -> Plans -> Implementation -> Completion
73
+ - Keep docs updated as features evolve:
74
+ - Implementation notes: `docs/implementation/`
75
+ - Guidelines: `docs/guidelines/`
76
+ - Use test driven development whenever possible
77
+ - Document what and why with JSDoc comments
78
+
79
+ ## Plugin Asset Workflow
80
+
81
+ - Root `skills/` and `AGENTS.md` are the only authored shared agent guidance. `CLAUDE.md` and `GEMINI.md` must remain symlinks to `AGENTS.md`.
82
+ - Use the repository-internal `githits-plugin-maintenance` skill when changing skills, agent guidance, plugin/marketplace/extension manifests, MCP transport metadata, root release metadata, generator behavior, or agent-facing setup/auth behavior. It must remain under `.agents/skills/` and must not be published with the public root `skills/` tree.
83
+ - Do not edit generated plugin assets directly. Change their canonical inputs, run `bun run plugins:generate`, inspect the diff, and run `bun run plugins:check`.
84
+ - `server.json` owns the canonical plugin keyword list used by generated manifests; keep `package.json` aligned with it.
85
+ - All plugin and extension packages use hosted remote MCP. Direct `githits init` configuration retains local stdio except for Cursor, which is remote-only. Claude and Gemini direct setup remove legacy plugin or extension state before installing the user-scoped stdio server.
86
+
87
+ ## TypeScript Essentials
88
+
89
+ ### Quick Start
90
+
91
+ - Use `bun run dev` for development
92
+ - Use `bun test` for testing
93
+ - Use `bun run build` before committing
94
+
95
+ ### Code Style
96
+
97
+ - Always add TypeScript types for function parameters and returns
98
+ - Prefer interfaces to type aliases for object shapes
99
+ - Use `const` assertions for literal types
100
+ - Prefer explicit types over inference for public APIs
101
+ - Use Zod for runtime validation
102
+
103
+ ### Patterns
104
+
105
+ - **Dependency Injection**: Use factory functions that accept dependencies
106
+ - **Service Layer**: Abstract external calls behind service interfaces
107
+ - **Error Handling**: Use `withErrorHandling()` wrapper for consistent errors
108
+ - **Tool Pattern**: Follow `ToolDefinition` interface for MCP tools
109
+
110
+ ## Workspace Boundaries
111
+
112
+ - Root `src/**` is still the published `githits` CLI implementation until the CLI package move completes. It owns Commander commands, local auth storage, browser login, init/setup flows, local stdio MCP startup, and plugin/assistant packaging assets.
113
+ - `packages/core-internal` is private source. It owns transport-neutral service clients, service interfaces, shared request/header/telemetry primitives, neutral service errors, PKCE helpers, and `TokenProvider`. Never publish or leak `@githits/core-internal` into public artifacts.
114
+ - `packages/mcp` is the public `@githits/mcp` package. Its public tool/server API is `packages/mcp/src/index.ts`: transport-neutral MCP server creation, tool registration, descriptors, instructions, request-scoped service provider types, and MCP service types. Its public runtime/client API is `packages/mcp/src/client.ts`, exported as `@githits/mcp/client`, for remote MCP servers that need concrete service implementations and token/header/config helpers.
115
+ - `@githits/mcp/smoke-test` is a public validation helper entrypoint for remote MCP servers. It exports smoke assertions and `runMcpSmoke()` without depending on local CLI startup.
116
+ - `@githits/mcp/internal` is a workspace-only alias for root CLI transition helpers. External packages and the future remote MCP server repo must never import it. If remote server work needs something internal, promote the smallest stable API through `@githits/mcp` instead.
117
+ - Public package artifacts for both root `githits` and `@githits/mcp` must not contain `@githits/core-internal`, `workspace:*`, `@githits/mcp/internal`, or private source aliases in JS, declarations, or manifests.
118
+
119
+ ## Release Boundaries
120
+
121
+ - `githits` and `@githits/mcp` have separate release flows. They may be bumped together when both surfaces changed, but CLI-only changes should not bump `@githits/mcp`.
122
+ - Root `githits` release versions must stay aligned with generated plugin/assistant manifests: `.plugin/plugin.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, `.cursor-plugin/plugin.json`, `.claude-plugin/marketplace.json`, and `gemini-extension.json`. The versionless Antigravity `plugin.json` and `mcp_config.json` must also be regenerated and checked.
123
+ - `@githits/mcp` release versions live in `packages/mcp/package.json` and should change only for MCP package API, tool behavior, MCP instructions, schemas, MCP auth/error behavior, or remote-server-facing public type changes.
124
+ - For coordinated CLI and MCP releases, keep the MCP minor aligned with the CLI minor for discoverability. The first MCP release for a CLI minor starts at `X.Y.0`; later MCP-package-visible changes in that CLI minor bump the MCP patch.
125
+ - Successful `Main` runs on `main` trigger both root and MCP release workflows. The MCP workflow publishes only when the package version is not already published; manual dispatch is for recovery or dry runs.
126
+ - Validate package behavior from outside root path aliases. Repo-local imports can hide package export-map or declaration problems.
127
+
128
+ ### Common Pitfalls
129
+
130
+ - Not mocking services in tests
131
+ - Missing error handling in async operations
132
+ - Not updating `index.ts` exports when adding new modules
133
+
134
+ ## Commit & PR Guidelines
135
+
136
+ ### Commit Messages
137
+
138
+ Use [Conventional Commits](https://www.conventionalcommits.org/) format:
139
+
140
+ ```
141
+ <type>: <description>
142
+
143
+ [optional body with context]
144
+ ```
145
+
146
+ **Types:**
147
+
148
+ - `feat:` - New feature
149
+ - `fix:` - Bug fix
150
+ - `docs:` - Documentation only
151
+ - `refactor:` - Code change that neither fixes a bug nor adds a feature
152
+ - `test:` - Adding or updating tests
153
+ - `chore:` - Maintenance tasks (deps, build, etc.)
154
+
155
+ **Examples:**
156
+
157
+ ```
158
+ feat: add search MCP tool
159
+
160
+ Implements code example search via GitHits backend REST API
161
+ with license filtering support.
162
+ ```
163
+
164
+ ```
165
+ fix: handle expired tokens in auth status
166
+ ```
167
+
168
+ ### Pull Requests
169
+
170
+ - Use descriptive PR titles (they appear in release notes)
171
+ - Add labels for categorization:
172
+ - `feature` / `enhancement` - New features
173
+ - `bug` / `fix` - Bug fixes
174
+ - `documentation` - Docs changes
175
+ - `maintenance` / `chore` - Maintenance
176
+ - `skip-changelog` - Exclude from release notes
177
+
178
+ ### Other Rules
179
+
180
+ - No single liners - include body with context
181
+ - Follow guidelines from `docs/guidelines/REVIEW_GUIDELINES.md`
182
+ - Do not amend commits or rebase unless asked specifically
183
+
184
+ ## Project Structure
185
+
186
+ ```
187
+ src/
188
+ cli.ts # root CLI entry point for published githits package
189
+ container.ts # root CLI dependency injection
190
+ auth/ # OAuth PKCE utilities
191
+ commands/ # CLI commands and local stdio MCP command
192
+ services/ # CLI/local auth storage and service composition
193
+ tools/ # root CLI/MCP parity tests only
194
+ packages/
195
+ core-internal/ # private transport-neutral service/core source
196
+ mcp/ # public @githits/mcp package source
197
+ cli/ # private placeholder until CLI package move
198
+ docs/
199
+ guidelines/ # Development guidelines
200
+ implementation/ # Implementation documentation
201
+ ```
package/README.md CHANGED
@@ -16,6 +16,8 @@
16
16
  <a href="https://www.npmjs.com/package/githits"><img alt="Node" src="https://img.shields.io/node/v/githits.svg"></a>
17
17
  <a href="https://modelcontextprotocol.io/"><img alt="MCP" src="https://img.shields.io/badge/MCP-enabled-5C4EE5"></a>
18
18
  <a href="https://skills.sh/githits-com/githits-cli"><img alt="skills.sh" src="https://skills.sh/b/githits-com/githits-cli"></a>
19
+ <a href="https://smithery.ai/servers/githits/GitHits"><img alt="smithery badge" src="https://smithery.ai/badge/githits/GitHits"></a>
20
+ <a href="https://glama.ai/mcp/servers/githits-com/githits-cli"><img alt="githits-cli MCP server" src="https://glama.ai/mcp/servers/githits-com/githits-cli/badges/score.svg"></a>
19
21
  </p>
20
22
 
21
23
  <p align="center">
@@ -41,8 +43,9 @@ enough.
41
43
  npx githits@latest init
42
44
  ```
43
45
 
44
- `init` signs you in, detects supported coding tools, and configures the local
45
- GitHits MCP server for the tools you select.
46
+ `init` signs you in, detects supported coding tools, and configures GitHits for
47
+ the tools you select. It uses the local stdio MCP except for Cursor, whose
48
+ direct setup uses the hosted remote MCP.
46
49
 
47
50
  Automatic setup currently supports Claude Code, Cursor, Windsurf,
48
51
  VS Code / Copilot, Cline, Claude Desktop, Codex CLI, Pi, Gemini CLI,
@@ -248,18 +251,32 @@ npx githits@latest init --install-agents cursor,codex
248
251
 
249
252
  ## Plugin and Extension Packaging
250
253
 
251
- The npm package also includes the existing plugin and extension assets used by
252
- compatible hosts:
254
+ The repository and published package provide the plugin and extension assets
255
+ used by compatible hosts. Git-based installs also retain the context-file
256
+ symlinks (`CLAUDE.md` and `GEMINI.md`) to the canonical `AGENTS.md`:
253
257
 
254
258
  - `.plugin/plugin.json`
255
259
  - `.claude-plugin/plugin.json`
256
260
  - `.claude-plugin/marketplace.json`
261
+ - `.codex-plugin/plugin.json`
262
+ - `.cursor-plugin/plugin.json`
257
263
  - `.mcp.json`
258
264
  - `gemini-extension.json`
265
+ - `plugin.json` (Google Antigravity)
266
+ - `mcp_config.json` (Google Antigravity)
267
+ - `AGENTS.md`
268
+ - `CLAUDE.md`
259
269
  - `GEMINI.md`
260
- - `plugins/claude/`
261
270
  - `skills/`
262
- - `commands/`
271
+
272
+ The root skill tree is shared by all supported hosts. Every plugin and extension
273
+ install uses the hosted remote MCP, including Claude, Codex, Cursor, Gemini CLI,
274
+ Google Antigravity, and VS Code/GitHub Copilot OpenPlugin. Direct `githits init`
275
+ setup is a separate path: it installs local stdio configurations for supported
276
+ tools except Cursor, which remains remote-only. The repository root is a native
277
+ Antigravity plugin through `plugin.json`, `mcp_config.json`, and the shared
278
+ `skills/` tree. Generated manifests are refreshed with `bun run plugins:generate`
279
+ and validated with `bun run plugins:check`.
263
280
 
264
281
  For Claude Code marketplace installs:
265
282