glootie-cc 2.0.4 → 2.0.8

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.
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "AnEntrypoint-glootie-cc",
3
+ "owner": {
4
+ "name": "AnEntrypoint"
5
+ },
6
+ "description": "Advanced Claude Code plugins by AnEntrypoint with WFGY integration and MCP tools",
7
+ "version": "1.0.1",
8
+ "metadata": {
9
+ "description": "Advanced Claude Code plugins featuring WFGY integration, automated workflows, and comprehensive MCP tool support for enhanced development productivity"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "glootie-cc",
14
+ "source": "./"
15
+ }
16
+ ]
17
+ }
18
+
19
+
20
+
package/.mcp.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://schemas.modelcontextprotocol.io/0.1.0/mcp.json",
3
+ "mcpServers": {
4
+ "glootie": {
5
+ "command": "node",
6
+ "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/mcp-glootie/src/index.js"],
7
+ "timeout": 360000
8
+ },
9
+ "playwright": {
10
+ "command": "node",
11
+ "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/@playwright/mcp/cli.js"],
12
+ "timeout": 360000
13
+ },
14
+ "vexify": {
15
+ "command": "node",
16
+ "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/vexify/lib/bin/cli.js", "mcp"],
17
+ "timeout": 360000
18
+ }
19
+ }
20
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,43 @@
1
+ # CHANGELOG
2
+
3
+ ## [2.0.6] - 2025-11-14
4
+
5
+ ### Performance
6
+ - Bundled mcp-thorns and wfgy directly into node_modules (like MCP tools)
7
+ - Eliminated npx overhead for hook commands (~4-5s faster)
8
+ - Hook uses direct node invocation instead of npx
9
+ - Hook completes in ~50s instead of hanging indefinitely
10
+
11
+ ### Fixes
12
+ - Fixed AbortError by preventing hooks from timing out
13
+ - Changed hook commands from npx to bundled node invocation
14
+ - Hook gracefully skips mcp-thorns/wfgy if they timeout (3min) or error
15
+ - MCP server timeouts set to 180000ms (3min) for reliability
16
+
17
+ ### Configuration
18
+ - prompt-submit-hook.js: 180000ms (3min) timeout with bundled packages
19
+ - hooks.json: 7200s framework timeout
20
+ - .mcp.json: 360000ms (6min) for glootie/playwright/vexify
21
+ - killSignal: 'SIGTERM' for clean process termination
22
+
23
+ ### Dependencies
24
+ - Added mcp-thorns and wfgy as bundled dependencies
25
+ - Included in node_modules for zero npx overhead
26
+
27
+ ## [2.0.5] - 2025-11-04
28
+
29
+ ### Fixes
30
+ - Fixed MCP server paths to work when plugin is used in different folders
31
+ - Updated .mcp.json to use ${CLAUDE_PLUGIN_ROOT} environment variable instead of relative paths
32
+ - MCP servers now correctly resolve paths regardless of instantiation directory
33
+
34
+ ### Performance
35
+ - Eliminated npx overhead by bundling MCP packages directly in node_modules
36
+ - Updated .mcp.json to invoke MCP tools via direct node invocation instead of npx
37
+ - All three tools (glootie, playwright, vexify) now have zero startup overhead
38
+ - Startup improvement: 30-60s (npx overhead) → 100-200ms (direct invocation)
39
+ - Improvement factor: 150-600x faster
40
+
41
+ ### Dependencies
42
+ - Added @playwright/mcp, mcp-glootie, vexify as dependencies
43
+ - Included node_modules in npm distribution for zero-latency access
package/CLAUDE.md ADDED
@@ -0,0 +1,144 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ **glootie-cc** is an advanced Claude Code plugin that integrates MCP (Model Context Protocol) tools, WFGY workflow automation, and automated hooks for enhanced development productivity. It bundles three MCP servers and provides comprehensive automation for Claude Code sessions.
8
+
9
+ **Version:** 2.0.4
10
+ **Repository:** https://github.com/AnEntrypoint/glootie-cc
11
+ **Type:** Node.js npm package
12
+
13
+ ## Architecture
14
+
15
+ ### Plugin Structure
16
+ - **prompt-submit-hook.js** - SessionStart hook that loads workflow context and WFGY integration
17
+ - **stop-hook.js** - Stop hook that provides session cleanup (currently minimal no-op to avoid timeouts)
18
+ - **hooks/hooks.json** - Hook configuration mapping
19
+ - **start.md** - Mandatory dev workflow rules and absolute requirements
20
+ - **.mcp.json** - MCP server definitions for bundled tools
21
+ - **package.json** - npm package metadata
22
+
23
+ ### Bundled MCP Servers
24
+ 1. **glootie** - Code execution and testing (`mcp-glootie@latest`)
25
+ 2. **playwright** - Browser automation (`@playwright/mcp@latest`)
26
+ 3. **vexify** - Code search and AST analysis (`vexify@latest`)
27
+
28
+ ### Hook System
29
+ - **SessionStart**: Runs `prompt-submit-hook.js` to load start.md and initialize WFGY context
30
+ - **Stop**: Runs `stop-hook.js` (minimal cleanup)
31
+
32
+ ## Development Commands
33
+
34
+ ```bash
35
+ npm install # Install dependencies
36
+ npm view glootie-cc # Check npm registry info
37
+ git status # Check working directory status
38
+ git push # Push changes to remote
39
+ ```
40
+
41
+ ## Workflow Rules (from start.md)
42
+
43
+ These are mandatory requirements enforced in all work:
44
+
45
+ ### File Management
46
+ - Maintain permanent structure only - no temp/mock/simulation files
47
+ - Single primary implementation - zero failovers/fallbacks
48
+ - Hard 200-line limit per file - split immediately if exceeded
49
+ - Delete all non-essential files (keep only CHANGELOG.md, CLAUDE.md, README.md, TODO.md)
50
+ - No report files or comments
51
+
52
+ ### Code Quality
53
+ - Errors must fail with clear logs, never hide through fallbacks
54
+ - All code must be dynamic/modular with ground truth values (no hardcoded values)
55
+ - DRY architecture - resolve duplicate code immediately
56
+ - Keep code concise and functional
57
+
58
+ ### Testing & Validation
59
+ - Manual testing only - no test files
60
+ - Use glootie MCP and playwright MCP for execution and debugging
61
+ - Troubleshoot via execution before editing files
62
+ - Hypothesize and verify through live execution
63
+
64
+ ### Session Management
65
+ - TODO.md must be completely cleared before stopping (no items remaining)
66
+ - CLAUDE.md tracks technical info in realtime
67
+ - CHANGELOG.md captures concise change summaries
68
+ - Logs should be kept <4KB ideal, max 30KB
69
+
70
+ ## Key Technical Notes
71
+
72
+ ### Timeout Configuration
73
+ **MCP Server Timeouts**: All three MCP servers have explicit timeout values in .mcp.json:
74
+ - glootie: 360000ms (6min)
75
+ - playwright: 360000ms (6min)
76
+ - vexify: 360000ms (6min)
77
+
78
+ **Hook Script Execution**: prompt-submit-hook.js uses bundled mcp-thorns and wfgy (direct node invocation, no npx). Timeout: 180000ms (3min) per command with SIGTERM killSignal. If tools timeout/error, they are gracefully skipped. Hook completes in ~50s typical, ~6min worst case.
79
+
80
+ **Project-Level Configuration**: Projects can set MCP_TIMEOUT and MCP_TOOL_TIMEOUT in .claude/settings.json env section. Example values: MCP_TIMEOUT: 360000ms, MCP_TOOL_TIMEOUT: 360000ms.
81
+
82
+ **Stop Hook**: The stop-hook was simplified to a minimal no-op after experiencing ETIMEDOUT errors. Previous iterations that attempted git checks, npm lookups, or subprocess execution caused timeouts in the Claude Code hook framework. The current implementation exits immediately to avoid blocking session stops.
83
+
84
+ ### Hook Output Format
85
+ - SessionStart hook outputs JSON with `hookSpecificOutput` containing `hookEventName` and `additionalContext`
86
+ - Stop hook should output nothing (silent pass) unless blocking - outputs `{decision: "block", reason: "..."}` if blocking is needed
87
+ - All hooks must handle errors gracefully and avoid process crashes
88
+
89
+ ### Important: Never Run eval.js Manually
90
+ The eval.js file runs automatically at the end of processes - never invoke it manually.
91
+
92
+ ## Available Tools
93
+ Through the bundled MCP servers and Claude Code:
94
+ - **Execution**: glootie execute, bash, nodejs, deno
95
+ - **Browser**: playwright for DOM manipulation, navigation, snapshots
96
+ - **Search**: vexify for code search and AST analysis
97
+ - **File ops**: Read, Write, Edit, Glob, Grep
98
+ - **Automation**: Task tool for complex workflows
99
+
100
+ ## Publishing & Deployment
101
+
102
+ The package is published to npm as `glootie-cc`:
103
+ ```bash
104
+ npm publish # Publish current version to npm
105
+ ```
106
+
107
+ Update version in package.json before publishing. Main entry point is `.claude-plugin/plugin.json`.
108
+
109
+ ## Testing Context Sessions
110
+
111
+ The plugin is tested with DocStudio E2E evaluation suite. The suite runs 14 tests covering auth, marketplace, documents, chat, and tools. Session Stop should pass silently without blocking.
112
+
113
+ ## Git Workflow
114
+
115
+ Recent work has focused on fixing the stop-hook timeout issues:
116
+ - Removed shell mode git commands that caused ETIMEDOUT
117
+ - Removed npm registry lookups that could hang
118
+ - Simplified to minimal no-op to ensure hook completes quickly
119
+
120
+ Check git history for regression troubleshooting - always use differential comparisons and manual edits rather than reverts.
121
+
122
+ ## Performance Optimization
123
+
124
+ ### MCP Startup via Direct Node Invocation
125
+ Eliminated npx overhead by bundling MCP packages directly. All three MCP servers now invoke node directly against local binaries:
126
+
127
+ - **glootie**: `node ${CLAUDE_PLUGIN_ROOT}/node_modules/mcp-glootie/src/index.js`
128
+ - **playwright**: `node ${CLAUDE_PLUGIN_ROOT}/node_modules/@playwright/mcp/cli.js`
129
+ - **vexify**: `node ${CLAUDE_PLUGIN_ROOT}/node_modules/vexify/lib/bin/cli.js mcp`
130
+
131
+ **Benefits**:
132
+ - Zero npx startup overhead (no npm registry queries)
133
+ - Instant binary resolution (no package resolution phase)
134
+ - All packages included in npm distribution
135
+ - Single `npm install` provides complete setup
136
+ - **MCP works correctly in any folder** - uses ${CLAUDE_PLUGIN_ROOT} environment variable expansion
137
+
138
+ **Performance Impact**:
139
+ - Previous approach: ~30-60s (first run, npx overhead + download) → ~3-8s (cached)
140
+ - Current approach: ~100-200ms (direct node invocation, zero overhead)
141
+ - Improvement: **150-600x faster startup**
142
+
143
+ ### MCP Path Resolution Fix
144
+ Previous versions used relative paths (`./node_modules/...`) which broke when plugin was used in different folders. Now uses `${CLAUDE_PLUGIN_ROOT}` environment variable that Claude Code expands to the actual plugin directory, ensuring MCP servers work correctly regardless of where the plugin is instantiated. This is the documented standard for plugin-relative paths in Claude Code MCP configurations.
@@ -0,0 +1,28 @@
1
+ {
2
+ "description": "SessionStart hook for glootie-cc plugin",
3
+ "hooks": {
4
+ "SessionStart": [
5
+ {
6
+ "matcher" : "*",
7
+ "hooks": [
8
+ {
9
+ "type": "command",
10
+ "command": "${CLAUDE_PLUGIN_ROOT}/prompt-submit-hook.js",
11
+ "timeout": 7200
12
+ }
13
+ ]
14
+ }
15
+ ],
16
+ "Stop": [
17
+ {
18
+ "hooks": [
19
+ {
20
+ "type": "command",
21
+ "command": "${CLAUDE_PLUGIN_ROOT}/stop-hook.js",
22
+ "timeout": 7200
23
+ }
24
+ ]
25
+ }
26
+ ]
27
+ }
28
+ }
package/package.json CHANGED
@@ -1,42 +1,55 @@
1
- {
2
- "name": "glootie-cc",
3
- "version": "2.0.4",
4
- "description": "Advanced Claude Code plugin with WFGY integration, MCP tools, and automated hooks",
5
- "main": "claude-plugin.json",
6
- "bin": {
7
- "glootie-cc": "./cli.js"
8
- },
9
- "files": [
10
- "claude-plugin.json",
11
- "context/",
12
- "README.md",
13
- "cli.js"
14
- ],
15
- "keywords": [
16
- "claude-code",
17
- "claude-plugin",
18
- "wfgy",
19
- "mcp",
20
- "automation",
21
- "glootie"
22
- ],
23
- "author": "AnEntrypoint",
24
- "license": "MIT",
25
- "repository": {
26
- "type": "git",
27
- "url": "https://github.com/AnEntrypoint/glootie-cc.git"
28
- },
29
- "homepage": "https://github.com/AnEntrypoint/glootie-cc#readme",
30
- "bugs": {
31
- "url": "https://github.com/AnEntrypoint/glootie-cc/issues"
32
- },
33
- "engines": {
34
- "node": ">=16.0.0"
35
- },
36
- "peerDependencies": {
37
- "@anthropic-ai/claude-code": "*"
38
- },
39
- "publishConfig": {
40
- "access": "public"
41
- }
42
- }
1
+ {
2
+ "name": "glootie-cc",
3
+ "version": "2.0.8",
4
+ "description": "Advanced Claude Code plugin with WFGY integration, MCP tools, and automated hooks",
5
+ "main": ".claude-plugin/plugin.json",
6
+ "bin": {
7
+ "glootie-cc": "./cli.js"
8
+ },
9
+ "files": [
10
+ ".claude-plugin/",
11
+ "hooks/",
12
+ "context/",
13
+ "node_modules/",
14
+ "package-lock.json",
15
+ "README.md",
16
+ "CLAUDE.md",
17
+ "CHANGELOG.md",
18
+ "cli.js",
19
+ ".mcp.json"
20
+ ],
21
+ "keywords": [
22
+ "claude-code",
23
+ "claude-plugin",
24
+ "wfgy",
25
+ "mcp",
26
+ "automation",
27
+ "glootie"
28
+ ],
29
+ "author": "AnEntrypoint",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/AnEntrypoint/glootie-cc.git"
34
+ },
35
+ "homepage": "https://github.com/AnEntrypoint/glootie-cc#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/AnEntrypoint/glootie-cc/issues"
38
+ },
39
+ "engines": {
40
+ "node": ">=16.0.0"
41
+ },
42
+ "peerDependencies": {
43
+ "@anthropic-ai/claude-code": "*"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "dependencies": {
49
+ "@playwright/mcp": "^0.0.45",
50
+ "mcp-glootie": "^3.4.67",
51
+ "mcp-thorns": "^5.1.1",
52
+ "vexify": "^0.16.28",
53
+ "wfgy": "^1.0.1"
54
+ }
55
+ }
@@ -1,106 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": ["Read", "Write", "Edit", "Bash", "Task", "WebFetch", "Glob", "Grep", "TodoWrite", "mcp__glootie__execute", "mcp__glootie__ast_tool", "mcp__glootie__caveat", "mcp__playwright__browser_navigate", "mcp__playwright__browser_click", "mcp__playwright__browser_type", "mcp__playwright__browser_snapshot", "mcp__playwright__browser_close", "mcp__vexify__search_code"]
4
- },
5
- "mcpServers": "./.mcp.json",
6
- "hooks": {
7
- "UserPromptSubmit": [
8
- {
9
- "matcher": "*",
10
- "hooks": [
11
- {
12
- "type": "command",
13
- "command": "npx -y wfgy hook && cat CLAUDE.md && npx -y mcp-thorns@latest && cat ./context/work-guidelines.md"
14
- }
15
- ]
16
- }
17
- ],
18
- "Stop": [
19
- {
20
- "matcher": "*",
21
- "hooks": [
22
- {
23
- "type": "command",
24
- "command": "npx -y wfgy@latest hook && cat ./context/cleanup-guidelines.md"
25
- }
26
- ]
27
- }
28
- ],
29
- "SessionStart": [
30
- {
31
- "matcher": "*",
32
- "hooks": [
33
- {
34
- "type": "command",
35
- "command": "npx -y mcp-thorns@latest"
36
- }
37
- ]
38
- }
39
- ],
40
- "PreToolUse": [
41
- {
42
- "matcher": ["Write", "Edit"],
43
- "hooks": [
44
- {
45
- "type": "command",
46
- "command": "echo \"🔧 Preparing to modify codebase...\""
47
- }
48
- ]
49
- },
50
- {
51
- "matcher": ["Bash"],
52
- "hooks": [
53
- {
54
- "type": "command",
55
- "command": "echo \"💻 Executing shell command...\""
56
- }
57
- ]
58
- }
59
- ],
60
- "PostToolUse": [
61
- {
62
- "matcher": ["Write", "Edit"],
63
- "hooks": [
64
- {
65
- "type": "command",
66
- "command": "echo \"✅ Code modification complete\""
67
- }
68
- ]
69
- },
70
- {
71
- "matcher": ["Bash"],
72
- "hooks": [
73
- {
74
- "type": "command",
75
- "command": "echo \"✅ Shell command executed\""
76
- }
77
- ]
78
- }
79
- ],
80
- "SessionEnd": [
81
- {
82
- "matcher": "*",
83
- "hooks": [
84
- {
85
- "type": "command",
86
- "command": "echo \"👋 Session ended - WFGY context saved\""
87
- }
88
- ]
89
- }
90
- ]
91
- },
92
- "alwaysThinkingEnabled": false,
93
- "settings": {
94
- "autoSave": true,
95
- "compactOnStop": false,
96
- "notificationTimeout": 5000,
97
- "debugMode": false
98
- },
99
- "metadata": {
100
- "name": "glootie-cc",
101
- "version": "2.0.0",
102
- "description": "Advanced Claude Code plugin with WFGY integration, MCP tools, and automated hooks",
103
- "author": "AnEntrypoint",
104
- "homepage": "https://github.com/AnEntrypoint/glootie-cc"
105
- }
106
- }
package/cli.js DELETED
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- console.log('glootie-cc Claude Code Plugin v2.0.0');
4
- console.log('Advanced plugin with WFGY integration and MCP tools');
5
- console.log('');
6
- console.log('This plugin should be installed via Claude Code plugin system:');
7
- console.log(' /plugin install glootie-cc');
8
- console.log('');
9
- console.log('Features:');
10
- console.log(' - 6 automated hooks for complete workflow automation');
11
- console.log(' - 3 bundled MCP servers (glootie, vexify, playwright)');
12
- console.log(' - WFGY integration and architectural guidance');
13
- console.log(' - Complete tool permissions for enhanced productivity');
14
- console.log('');
15
- console.log('GitHub: https://github.com/AnEntrypoint/glootie-cc');
16
- console.log('NPM: https://www.npmjs.com/package/glootie-cc');
@@ -1,3 +0,0 @@
1
- Assign wfgy mutables to any issues that remain, to troubleshoot and fix them then scan the codebase to see if there are any other areas that should also be updated because of these changes, then use WFGY to determine if there's architectural changes that must now happen, and finally if the project is deployable, deploy it, if it's an npm project, publish it, and merge and sync the github intelligently, then clean up any files we've left behind in the codebase, that aren't part of the program's permanent structure, and use WFGY the selection of code if there's any complexity in the github merge to ensure we intelligently merge additions and removals whenever they represent an intentional advancement in the codebase.
2
-
3
- Mandatory: there must only be one comment in every file, at the top of the file, with a super compact description of the technical caveats, intended exports and imports, relationship to the rest of the program structure and internal function of it, we must ALWAYS update the spec of each file we edited, if we see a code file with no spec at the top, it must immediately be added, we must immediately remove any comments we find that's not that comment, no exceptions. Never update code without updating this text, always refer to this text before editing the code. If our codebase analysis exposes files with more or less than one comment, fix it immediately. Use MCP playwright never use regular playwright.
@@ -1,24 +0,0 @@
1
- Do not create files that aren't a part of the permanent structure of the codebase unless asked for.
2
- Never add any mocks or simulations anywhere.
3
- Only write primary implementations and never make fallbacks of any kind.
4
- Always first check that we're not re-implementing an existing part before making new parts.
5
-
6
- Memorize everything you learn to make it work to CLAUDE.md. We want to memorize how things work (NO CHANGELOGS JUST TECH INFO) not what's been done (IN THE PROJECT CODEBASE) continuously. It's not a log or a work history, it's for all the technical caveats and notes. Always clean it up while editing it, remove any changelogs from it, it must be as concise as possible without losing any meaning, zero additional tokens. Otherwise if the information applies to all projects edit ~/.claude/CLAUDE.md so you don't make mistakes in the future, update it and remove things that no longer apply.
7
-
8
- # VERY IMPORTANT YOU MUST **ALWAYS DO THIS USING MCP** **(NO EXCEPTIONS)**:
9
- - If there's client side code create global to access client side parts in real time for debugging
10
- - Analyze and handle all issues before implementing in code, be as methodical and deal with all corner cases first, find ground truth by executing code to make sure you measure-twice-cut-once
11
- - Use the mop-and-bucket approach to check the rest of the codebase and make sure we don't make duplicate implementations, consolidate all duplicates, keep the codebase simple, well frameworked, convention-over-configuration, configuration-over-code at all times
12
- - Make all outstanding codebase changes immediately, don't stop when there's work left to do
13
- - Before making changes to client side code, do code executions in playwright mcp to find out if the changes will work
14
- - Test and change as many times as needed to finish all the work requested, never under any circumstances finish or summarize when there's work left to do. Check what mcp tools are available and use what's useful
15
-
16
- Be forward thinking about architectural sanity, if something should be done, to improve the architecture, generalize or DRY the code, do it immediately before continuing. Our code style must be at all times concise, DRY, generalized and forward thinking structurally.
17
-
18
- If a file is more than 200 lines split it immediately before continuing.
19
- When troubleshooting any issue look back a few versions in the git history to see if it's a regression, use the history to guide to back to a working version if possible, otherwise choose a solution.
20
-
21
- Always use a persistent background shell to do your tests.
22
-
23
- When using playwright, always close everything before you start your test, this will sort out the cache.
24
- Use vexify, glootie, and playwright as much as possible when available. Test server side ideas in glootie execute and client side ideas in playwright code execution before changing code, use them to debug in real time by executing, use vexify for code lookups when you don't know the exact syntax or for searching for multiple things that are similar.