Analyze Project Skill
Analyze the current project and store facts about it in long-term memory.
Workflow
- Read key project files to understand the tech stack
- Extract facts about languages, frameworks, tools, conventions
- Store facts using
memory.store_extraction
Files to Read
Read these files (if they exist) to understand the project:
Package/Dependency Files
Gemfile - Ruby dependencies (Rails, RSpec, etc.)
package.json - JavaScript/TypeScript dependencies
pyproject.toml or requirements.txt - Python dependencies
Cargo.toml - Rust dependencies
go.mod - Go dependencies
pom.xml or build.gradle - Java dependencies
Configuration Files
README.md - Project overview and setup instructions
tsconfig.json - TypeScript configuration
.eslintrc* or eslint.config.* - ESLint configuration
.prettierrc* - Prettier configuration
.rubocop.yml or .standard.yml - Ruby linting
Dockerfile - Container configuration
.github/workflows/*.yml - CI/CD configuration
Convention Files
.editorconfig - Editor configuration
CLAUDE.md or AGENTS.md - AI assistant instructions
What to Extract
Look for and store facts about:
| Category |
Predicate |
Examples |
| Languages |
uses_language |
Ruby, TypeScript, Python, Go, Rust |
| Frameworks |
uses_framework |
Rails, React, Next.js, Django, FastAPI |
| Tools |
uses_tool |
RSpec, Jest, ESLint, Prettier, Docker |
| Databases |
uses_database |
PostgreSQL, MySQL, Redis, MongoDB |
| Package Manager |
uses_package_manager |
Bundler, npm, pnpm, Poetry, Cargo |
| CI/CD |
uses_ci |
GitHub Actions, CircleCI, GitLab CI |
| Conventions |
has_convention |
EditorConfig, 2-space indentation |
Example Analysis
After reading Gemfile:
source 'https://rubygems.org'
gem 'rails', '~> 7.0'
gem 'pg'
gem 'rspec-rails', group: :test
Store these facts:
{
"entities": [
{"type": "language", "name": "Ruby"},
{"type": "framework", "name": "Rails"},
{"type": "database", "name": "PostgreSQL"},
{"type": "tool", "name": "RSpec"}
],
"facts": [
{
"subject": "repo",
"predicate": "uses_language",
"object": "Ruby",
"quote": "Gemfile present",
"strength": "stated"
},
{
"subject": "repo",
"predicate": "uses_framework",
"object": "Rails",
"quote": "gem 'rails', '~> 7.0'",
"strength": "stated"
},
{
"subject": "repo",
"predicate": "uses_database",
"object": "PostgreSQL",
"quote": "gem 'pg'",
"strength": "stated"
},
{
"subject": "repo",
"predicate": "uses_tool",
"object": "RSpec",
"quote": "gem 'rspec-rails'",
"strength": "stated"
},
{
"subject": "repo",
"predicate": "uses_package_manager",
"object": "Bundler",
"quote": "Gemfile present",
"strength": "stated"
}
]
}
Best Practices
- Check what exists first: Use
memory.recall with broad query like "uses" to see existing facts
- Don't duplicate: Skip facts that are already stored
- Include quotes: Reference the specific line or file where you found the information
- Use
stated strength: For explicit declarations in config files
- Be selective: Only store durable, useful facts—not every dependency
Scope
- Use
scope_hint: "project" for project-specific facts (default)
- Use
scope_hint: "global" for user preferences found in global config files
1---2name: project-analysis-23description: Knowledge about analyzing projects for tech stack, frameworks, tools, and conventions. Use when asked to understand or learn about a project's structure.4---5
6# Analyze Project Skill
7
8Analyze the current project and store facts about it in long-term memory.
9
10## Workflow
11
121. **Read key project files** to understand the tech stack
132. **Extract facts** about languages, frameworks, tools, conventions
143. **Store facts** using `memory.store_extraction`
15
16## Files to Read
17
18Read these files (if they exist) to understand the project:
19
20### Package/Dependency Files
21- `Gemfile` - Ruby dependencies (Rails, RSpec, etc.)
22- `package.json` - JavaScript/TypeScript dependencies
23- `pyproject.toml` or `requirements.txt` - Python dependencies
24- `Cargo.toml` - Rust dependencies
25- `go.mod` - Go dependencies
26- `pom.xml` or `build.gradle` - Java dependencies
27
28### Configuration Files
29- `README.md` - Project overview and setup instructions
30- `tsconfig.json` - TypeScript configuration
31- `.eslintrc*` or `eslint.config.*` - ESLint configuration
32- `.prettierrc*` - Prettier configuration
33- `.rubocop.yml` or `.standard.yml` - Ruby linting
34- `Dockerfile` - Container configuration
35- `.github/workflows/*.yml` - CI/CD configuration
36
37### Convention Files
38- `.editorconfig` - Editor configuration
39- `CLAUDE.md` or `AGENTS.md` - AI assistant instructions
40
41## What to Extract
42
43Look for and store facts about:
44
45| Category | Predicate | Examples |
46|----------|-----------|----------|
47| Languages | `uses_language` | Ruby, TypeScript, Python, Go, Rust |
48| Frameworks | `uses_framework` | Rails, React, Next.js, Django, FastAPI |
49| Tools | `uses_tool` | RSpec, Jest, ESLint, Prettier, Docker |
50| Databases | `uses_database` | PostgreSQL, MySQL, Redis, MongoDB |
51| Package Manager | `uses_package_manager` | Bundler, npm, pnpm, Poetry, Cargo |
52| CI/CD | `uses_ci` | GitHub Actions, CircleCI, GitLab CI |
53| Conventions | `has_convention` | EditorConfig, 2-space indentation |
54
55## Example Analysis
56
57After reading `Gemfile`:
58```ruby
59source 'https://rubygems.org'
60gem 'rails', '~> 7.0'
61gem 'pg'
62gem 'rspec-rails', group: :test
63```
64
65Store these facts:
66```json
67{
68 "entities": [
69 {"type": "language", "name": "Ruby"},
70 {"type": "framework", "name": "Rails"},
71 {"type": "database", "name": "PostgreSQL"},
72 {"type": "tool", "name": "RSpec"}
73 ],
74 "facts": [
75 {
76 "subject": "repo",
77 "predicate": "uses_language",
78 "object": "Ruby",
79 "quote": "Gemfile present",
80 "strength": "stated"
81 },
82 {
83 "subject": "repo",
84 "predicate": "uses_framework",
85 "object": "Rails",
86 "quote": "gem 'rails', '~> 7.0'",
87 "strength": "stated"
88 },
89 {
90 "subject": "repo",
91 "predicate": "uses_database",
92 "object": "PostgreSQL",
93 "quote": "gem 'pg'",
94 "strength": "stated"
95 },
96 {
97 "subject": "repo",
98 "predicate": "uses_tool",
99 "object": "RSpec",
100 "quote": "gem 'rspec-rails'",
101 "strength": "stated"
102 },
103 {
104 "subject": "repo",
105 "predicate": "uses_package_manager",
106 "object": "Bundler",
107 "quote": "Gemfile present",
108 "strength": "stated"
109 }
110 ]
111}
112```
113
114## Best Practices
115
1161. **Check what exists first**: Use `memory.recall` with broad query like "uses" to see existing facts
1172. **Don't duplicate**: Skip facts that are already stored
1183. **Include quotes**: Reference the specific line or file where you found the information
1194. **Use `stated` strength**: For explicit declarations in config files
1205. **Be selective**: Only store durable, useful facts—not every dependency
121
122## Scope
123
124- Use `scope_hint: "project"` for project-specific facts (default)
125- Use `scope_hint: "global"` for user preferences found in global config files