Skip to content
discover logo

discover

Extracts semantic memory from project analysis. Scans codebase, docs, and configs to understand tech stack, constraints, and goals.

SKILL.md

Full skill instructions

Discover Skill (Stage 1)

This skill analyzes existing projects and generates Gastown-compatible semantic memory.

When to Use

Use this skill when:

  • Starting migration of an existing project
  • Need to understand a codebase's tech stack
  • Want to document project constraints and goals
  • Preparing for roadmap generation (Stage 2)

Output Structure

project/
├── .gt/
│   └── memory/
│       ├── semantic.json      # Permanent facts (tech stack, constraints)
│       ├── episodic.json      # Decisions with TTL (optional)
│       └── procedural.json    # Learned patterns (optional)
└── [existing project files]

Discovery Procedure

Scan these locations in priority order:

1. Package Files (Tech Stack Detection)

FileDetects
package.jsonNode.js runtime, framework, dependencies
Cargo.tomlRust projects
go.modGo projects
requirements.txtPython dependencies
pyproject.tomlPython projects (modern)
GemfileRuby projects
pom.xmlJava/​Maven projects
build.gradleJava/​Gradle projects

2. Configuration Files (Service Detection)

FileDetects
.firebaserc, firebase.jsonFirebase
wrangler.tomlCloudflare Workers
vercel.jsonVercel deployment
netlify.tomlNetlify deployment
docker-compose.ymlContainerization
DockerfileContainer build
*.env.exampleEnvironment variables
.github/​workflows/CI/​CD (GitHub Actions)

3. Documentation (Project Understanding)

FileProvides
README.mdProject description, setup
docs/Architecture docs, ADRs, PRDs
CONTRIBUTING.mdDevelopment workflow
CHANGELOG.mdProject history
LICENSELicense type

4. Source Structure (Codebase Understanding)

DirectoryIndicates
src/, lib/, app/Main code location
tests/, __tests__/, spec/Test location
schemas/, migrations/Database schemas
components/UI component library
api/, routes/API structure

Tech Stack Extraction

Framework Detection

Look for these patterns in dependencies:

DependencyFramework
nextNext.js
reactReact
vueVue.js
@angular/​coreAngular
expressExpress.js
fastifyFastify
djangoDjango
flaskFlask
fastapiFastAPI
railsRuby on Rails
gin-gonic/​ginGin (Go)

Database Detection

IndicatorDatabase
pg, postgresPostgreSQL
mysql2MySQL
mongodb, mongooseMongoDB
redisRedis
prismaPrisma ORM
drizzle-ormDrizzle ORM
typeormTypeORM

Auth Detection

IndicatorAuth System
firebase-adminFirebase Auth
@auth0/Auth0
next-authNextAuth.js
passportPassport.js
clerkClerk
supabaseSupabase Auth

Output: semantic.json

{
  "$schema": "semantic-memory-v1",
  "project": {
    "name": "my-app",
    "type": "web-application",
    "primary_language": "TypeScript",
    "description": "A task management app for teams"
  },
  "tech_stack": {
    "runtime": "Node.js 20",
    "framework": "Next.js 14",
    "database": "Neon PostgreSQL",
    "auth": "Firebase Auth",
    "deployment": "Vercel",
    "styling": "Tailwind CSS",
    "testing": "Vitest",
    "orm": "Drizzle"
  },
  "personas": [
    {"name": "Team Lead", "needs": ["assign tasks", "track progress"]},
    {"name": "Developer", "needs": ["see my tasks", "update status"]}
  ],
  "constraints": [
    "Must support offline mode",
    "GDPR compliant data handling"
  ],
  "non_goals": [
    "Mobile native app (web-only for MVP)",
    "Enterprise SSO (future phase)"
  ],
  "evidence": {
    "last_scan": "2026-01-27T10:00:00Z",
    "files_analyzed": ["package.json", "README.md", "docs/​PRD.md"]
  }
}

Memory Types

Semantic Memory (Required)

Permanent facts that don't change:

  • Project name and type
  • Primary programming language
  • Tech stack components
  • Architectural constraints
  • Non-goals

Episodic Memory (Optional)

Decisions with time-to-live (~30 days):

  • Architecture decisions
  • Library choices with rationale
  • Trade-offs made

Procedural Memory (Optional)

Learned patterns:

  • Code conventions
  • Testing patterns
  • Deployment procedures

Quality Gates

GateRequirement
semantic_validsemantic.json is valid JSON
project_identifiedproject.name is not null or empty
tech_stack_detectedAt least 2 tech_stack fields populated
evidence_recordedevidence.files_analyzed has 1+ entries

Validation

python plugins/​lisa/​hooks/​validate.py --stage discover

Error Handling

If unable to detect something:

  • Set field to null rather than guessing
  • Add to evidence.unresolved list (if pattern exists)
  • Document what was searched and why it failed

Next Steps

After discover completes:

  • Proceed to Stage 2 (Plan) → skills/​plan/​SKILL.md
  • Or proceed directly to Stage 3 (Structure) if roadmap exists