Purpose
Scan local Git repositories to verify implementation status of components/features. Returns evidence-based status levels.
When to Use
- Directly invoked:
/local-repo-check authentication - Checking if a component has code in the codebase
- Verifying implementation claims against actual code
- Determining "In Progress" vs "Complete" status
- When invoked by other skills (like
/project-status)
Input
Component or feature name(s) to verify. Examples:
/local-repo-check authentication/local-repo-check user-dashboard payments
Repository Configuration
Before scanning, look for repository configuration:
Step 1: Check for Config Files
Use the Read tool to check if these files exist in the current working directory:
.entourage/repos.json- shared repo metadata (name, mainBranch, github).entourage/paths.local.json- personal local filesystem paths
Step 2: Parse repos.json
If the file exists, it contains a repos array. Each repo has:
name: Human-readable identifiermainBranch: Branch name for "shipped" status (default: "main")
Example .entourage/repos.json:
{
"repos": [
{
"name": "my-web-app",
"mainBranch": "main",
"github": "my-org/my-web-app"
}
]
}
Step 3: Parse paths.local.json
If the file exists, it contains a mapping of repo names to local paths:
Example .entourage/paths.local.json:
{
"my-web-app": "~/Documents/code/my-web-app"
}
Step 4: Merge Configurations
For each repo in repos.json:
- Look up the path by repo
nameinpaths.local.json - If path found: proceed with expansion and verification
- If path not found: mark as needing discovery
Step 5: Auto-Discovery (Fallback)
Only run this step if some repos are missing paths.
For repos without configured paths, use the discovery script to find them:
echo '{"repos":[{"name":"repo-name","github":"org/repo"}]}' | /path/to/plugin/scripts/discover-repos.sh
The script searches:
- Sibling directories (
../*/) - Common locations:
~/code/*,~/dev/*,~/projects/*,~/src/*
Matching: Uses git remote URL validation (not directory name), so it correctly identifies repos even if cloned with different names.
If repos are discovered:
- Use the discovered paths for scanning
- After completing the scan, offer to save the discovered paths:
Discovered local paths for: repo-a, repo-b Save to .entourage/paths.local.json? [y/N] - If user confirms, write paths.local.json (creates if needed, merges with existing)
If repos cannot be found:
- Report: "Repository 'name' not found locally. Clone from github.com/org/repo or configure path in .entourage/paths.local.json"
- Continue with other repos
Step 6: Expand Paths
Replace ~ with the user's home directory using Bash:
echo ~/path/to/repo
Step 7: Verify Access
For each repo with a configured path, confirm the path exists:
test -d "/expanded/path" && echo "exists" || echo "missing"
Scanning Workflow
For each component/feature being queried, perform these checks against each configured repository:
1. File Existence Check
Use Glob to find files matching the component name. Convert the component name to multiple naming conventions and search for each:
Naming Convention Conversion:
- Original: Use the component name as provided (e.g.,
UserAuth) - snake_case: Convert to lowercase with underscores (e.g.,
user_auth) - kebab-case: Convert to lowercase with hyphens (e.g.,
user-auth) - lowercase: Simple lowercase (e.g.,
userauth)
Search patterns (run all four):
**/*UserAuth* (original)
**/*user_auth* (snake_case)
**/*user-auth* (kebab-case)
**/*userauth* (lowercase)
2. Test File Detection
Search for test files using the same naming convention conversions:
**/*ComponentName*.test.*
**/*ComponentName*.spec.*
**/*component_name*.test.*
**/*component_name*.spec.*
**/*component-name*.test.*
**/*component-name*.spec.*
**/test*/*ComponentName*
**/test*/*component_name*
**/__tests__/*ComponentName*
**/__tests__/*component_name*
3. Git History Analysis
Check recent commits mentioning the component:
cd /path/to/repo && git log --oneline --all --since="3 months ago" --grep="ComponentName" | head -20
Check for feature branches:
cd /path/to/repo && git branch -a | grep -i "component"
Check if component code is on main branch:
cd /path/to/repo && git log main --oneline -- "**/ComponentName*" | head -5
4. Migration/Schema Detection (for database components)
Look for migration files:
**/migrations/*component*
**/db/*component*
Evidence Synthesis
Apply this decision tree to determine component status:
1. Code + tests found + on main branch?
YES -> Status: Done (High confidence)
2. Code + tests found (any branch)?
YES -> Status: Done (Medium confidence)
3. Code found but no tests?
YES -> Status: In Progress (Medium confidence)
4. Feature branch exists with commits?
YES -> Status: In Progress (Low confidence)
5. No code evidence found?
-> Status: Unknown
Error Handling
Repository Not Found
If a configured repo path doesn't exist:
- Report in output: "Repository 'name' not accessible at path"
- Continue with other repos
- Don't fail the entire scan
Git Command Failures
If git commands fail (not a git repo, permissions):
- Report: "Could not access git history for 'name'"
- Fall back to file existence checks only
Path Expansion Failures
If ~ expansion fails:
- Try
$HOME/rest/of/pathas fallback - Report: "Could not expand path for 'name'"
Output Format
With Repository Configuration
## Repository Scan: [Component Name]
| Repository | Evidence | Status | Confidence |
|------------|----------|--------|------------|
| [repo-name] | [Brief evidence summary] | Done/In Progress/Unknown | High/Med/Low |
### Scan Details
**[repo-name]:**
- File found: `path/to/file.tsx`
- Test found: `path/to/file.test.tsx`
- Git status: On main branch, last commit X days ago
Without Repository Configuration
## Repository Scan
No repository configuration found. Create `.entourage/repos.json` to enable code scanning.
See the plugin README for configuration instructions.
Multiple Components
When checking multiple components, output a summary table followed by details for each:
## Repository Scan Summary
| Component | Status | Source | Confidence |
|-----------|--------|--------|------------|
| auth | Done | entourage-web | High |
| dashboard | In Progress | entourage-web | Medium |
| payments | Unknown | - | - |
### Details
[Per-component scan details...]
Example
Query: /local-repo-check clerk-auth
Output:
## Repository Scan: clerk-auth
| Repository | Evidence | Status | Confidence |
|------------|----------|--------|------------|
| entourage-web | Code + tests on main | Done | High |
### Scan Details
**entourage-web:**
- File found: `src/auth/ClerkProvider.tsx`
- Test found: `src/auth/__tests__/ClerkProvider.test.tsx`
- Git status: On main branch, last commit 2 days ago
- Related commits: "Add Clerk authentication provider" (abc1234)
After Output
This skill returns results to the calling context (usually /project-status). Do not stop execution.
Continue with the next step in the workflow or TODO list.
