[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X7H9S3KVTPT09QEZBQCSSM":3,"skill-same:01M6X7H9S3KVTPT09QEZBQCSSM":127},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":59,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6X7H9S3KVTPT09QEZBQCSSM","project-analyzer",null,"Single-pass tech-stack detection with an agents\u002Fevidence\u002Fanalysis\u002F write-up; explicit request only. Deep multi-pass audit → universal-project-analysis. Raw primitives → project-analysis-core.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"analyzer","project analyzer","project","up","single","request","high","with","multi","tech","deep","core","evidence","only","primitives","write","stack","discovery","analysis","audit","2026-11-10 10:12:30",false,"---\nmodel_tier: high\ncontext_window: large\nname: project-analyzer\ndescription: \"Single-pass tech-stack detection with an agents\u002Fevidence\u002Fanalysis\u002F write-up; explicit request only. Deep multi-pass audit → universal-project-analysis. Raw primitives → project-analysis-core.\"\ndomain: discovery\nworkspaces:\n  - engineering\npacks:\n  - engineering-base\n---\n\n# project-analyzer\n\n## When to use\n\nUse this skill when:\n\n- Starting work on an unfamiliar project\n- Onboarding to a new codebase\n- Auditing the current state of agent docs, contexts, and features\n- Creating a baseline understanding of the project for future work\n- Generating comprehensive project documentation for knowledge transfer\n\n\nDo NOT use when:\n- Small, focused code changes\n- Regular feature development\n\n## Procedure: Analyze a project\n\nA **project analysis** is a systematic walkthrough of the entire codebase that:\n\n1. **Detects** — framework, language, tech stack, patterns, legacy vs. modern\n2. **Inventories** — modules, services, models, endpoints, tests\n3. **Analyzes** — business domains, data flows, API contracts, dependencies\n4. **Documents** — writes structured analysis files to `agents\u002Fevidence\u002Fanalysis\u002F`\n5. **Assesses** — identifies gaps, technical debt, missing docs\n\nIt orchestrates other skills and commands to produce a comprehensive picture.\n\n[`procedure.yaml`](procedure.yaml) holds the order: run phases one at a time, each only after the previous met its exit. A `judgement` exit is sequenced, not verified: state your decision first. Phase 3–6 without its layer writes `not-applicable.md` (Phase 6: `service-map.md`) saying why — an absent layer is a finding, not a skip.\n\n1. [Phase 1: Project overview](references\u002Fsteps\u002F01-project-overview.md) — exit: `check: analysis-overview-matches-manifests`\n2. [Phase 2: Architecture](references\u002Fsteps\u002F02-architecture.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Farchitecture`\n3. [Phase 3: Data layer](references\u002Fsteps\u002F03-data-layer.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fmodels`\n4. [Phase 4: Business domains](references\u002Fsteps\u002F04-business-domains.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fdomains`\n5. [Phase 5: API surface](references\u002Fsteps\u002F05-api-surface.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fapi`\n6. [Phase 6: Service map](references\u002Fsteps\u002F06-service-map.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fservices\u002Fservice-map.md`\n7. [Phase 7: Module inventory (if modules exist)](references\u002Fsteps\u002F07-module-inventory.md) — exit: `judgement`\n8. [Phase 8: Infrastructure & testing](references\u002Fsteps\u002F08-infrastructure-and-testing.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Ftesting\u002Ftest-map.md`\n9. [Phase 9: Agent docs audit](references\u002Fsteps\u002F09-agent-docs-audit.md) — exit: `judgement`\n10. [Phase 10: Gap analysis & action plan](references\u002Fsteps\u002F10-gap-analysis.md) — exit: `judgement`\n\n## Analysis output\n\nAll analysis results are written to `agents\u002Fevidence\u002Fanalysis\u002F` in a structured directory layout.\nThe goal: **someone could rebuild the project from these documents alone.**\n\n### Directory structure\n\n```\nagents\u002Fevidence\u002Fanalysis\u002F\n├── overview.md                  ← Project profile, tech stack, architecture summary\n├── architecture\u002F\n│   ├── database.md              ← Schema, connections, multi-tenancy, migrations\n│   ├── api.md                   ← Versioning, routes, middleware, auth flow\n│   ├── infrastructure.md        ← Docker, CI\u002FCD, deployment, AWS, monitoring\n│   └── patterns.md              ← Design patterns used (Repository, Service, Pipeline, etc.)\n├── domains\u002F\n│   ├── {domain}.md              ← One file per business domain (see below)\n│   └── ...\n├── modules\u002F\n│   ├── {module}.md              ← One file per module (see below)\n│   └── ...\n├── models\u002F\n│   ├── api-database.md          ← All api_database models, relationships, key columns\n│   └── customer-database.md     ← All customer_database models, relationships, key columns\n├── services\u002F\n│   └── service-map.md           ← All services with purpose, dependencies, key methods\n├── api\u002F\n│   ├── endpoints-v1.md          ← All v1 endpoints: route, controller, request, resource\n│   ├── endpoints-v2.md          ← All v2 endpoints: route, controller, request, resource\n│   └── contracts.md             ← API contracts: request\u002Fresponse shapes, validation rules\n└── testing\u002F\n    └── test-map.md              ← Test suites, coverage areas, test data strategy\n```\n\n### Domain analysis files\n\nEach business domain gets its own file in `agents\u002Fevidence\u002Fanalysis\u002Fdomains\u002F`. A domain groups\nrelated models, services, controllers, jobs, and events around a business concept:\n\n| Domain             | What it covers                                           |\n|--------------------|----------------------------------------------------------|\n| `projects.md`      | Construction sites, positions, project status, geocoding |\n| `planning.md`      | Appointments, crew assignments, capacity planning        |\n| `users.md`         | Employees, roles, permissions, authentication            |\n| `equipment.md`     | Machines, vehicles, repairs, time registration           |\n| `working-times.md` | Time tracking, absences, wage types, logs                |\n| `reports.md`       | Daily reports, images, measured quantities               |\n| `files.md`         | File uploads, file links, storage                        |\n| `customers.md`     | Tenant management, customer config, modules              |\n| `webhooks.md`      | Webhook dispatching, retry logic                         |\n| `imports.md`       | Client software imports (cross-reference with module)    |\n| `gps.md`           | GPS tracking, geofencing                                 |\n| `notifications.md` | Email, push, private messages, Slack                     |\n| `dashboard.md`     | Dashboard widgets, statistics                            |\n\nNot every project has all domains. Only create files for domains that actually exist.\n\n### Domain file template\n\nEach domain file should contain:\n\n```markdown\n# Domain: {Name}\n\n## Purpose\n\n{What this domain does in 2-3 sentences}\n\n## Models\n\n| Model | Table | Connection | Key Relationships |\n|---|---|---|---|\n\n## Services\n\n| Service | Purpose | Key Methods |\n|---|---|---|\n\n## Controllers (API Endpoints)\n\n| Endpoint | Controller | Request | Resource |\n|---|---|---|---|\n\n## Jobs & Events\n\n| Class | Type | Trigger | What it does |\n|---|---|---|---|\n\n## Business Rules\n\n- {Rule 1: e.g. \"A project can only be deleted if it has no working times\"}\n- {Rule 2}\n\n## Data Flow\n\n{Describe how data moves through this domain — from input to storage to output}\n\n## Dependencies\n\n- Depends on: {other domains}\n- Depended on by: {other domains}\n```\n\n### Module analysis files\n\nEach module gets its own file in `agents\u002Fevidence\u002Fanalysis\u002Fmodules\u002F`. Format:\n\n```markdown\n# Module: {Name}\n\n## Purpose\n\n{What this module does}\n\n## Structure\n\n{Directory tree with key files}\n\n## Public API\n\n{What other parts of the app use from this module: Services, Events, Models}\n\n## Internal Components\n\n{Controllers, Jobs, Commands, Listeners that are module-internal}\n\n## Configuration\n\n{Config files, .env variables, feature flags}\n\n## Testing\n\n{Test suites, test data, stubs}\n```\n\n## Detection checklist\n\n### Framework & language (multi-stack)\n\n| Check                  | How to detect                                                                |\n|------------------------|------------------------------------------------------------------------------|\n| PHP runtime + version  | `composer.json` → `require.php`                                              |\n| Laravel application    | `artisan` file at repo root + `laravel\u002Fframework` in `composer.json`         |\n| Symfony application    | `bin\u002Fconsole` + `symfony\u002Fframework-bundle` in `composer.json`                |\n| Composer package       | `composer.json` without `artisan` \u002F `bin\u002Fconsole`                            |\n| Node.js runtime        | `package.json` exists                                                        |\n| TypeScript             | `tsconfig.json` exists                                                       |\n| Frontend framework     | `package.json` → `react`, `vue`, `svelte`, `solid`, `astro`, `@angular\u002Fcore` |\n| Meta-framework         | `package.json` → `next`, `nuxt`, `remix`, `sveltekit`, `astro`               |\n| Python runtime         | `pyproject.toml`, `requirements.txt`, `setup.py`, or `Pipfile`               |\n| Python framework       | `pyproject.toml` \u002F `requirements.txt` → `django`, `fastapi`, `flask`         |\n| Go module              | `go.mod` exists                                                              |\n| Rust crate \u002F workspace | `Cargo.toml` exists                                                          |\n| Ruby app               | `Gemfile` → `rails`, `sinatra`                                               |\n| .NET project           | `*.csproj`, `*.fsproj`, or `global.json`                                     |\n| Java \u002F Kotlin          | `pom.xml`, `build.gradle`, or `build.gradle.kts`                             |\n\nAfter detecting **any** match, record the stack in the analysis output and select the matching `project-analysis-*` sub-skill (Laravel, Symfony, Next.js, React, Node\u002FExpress, Zend\u002FLaminas) — fall back to `project-analysis-core` if no framework-specific sub-skill applies.\n\n### Project type\n\n| Signal                                                                | Type                                  |\n|-----------------------------------------------------------------------|---------------------------------------|\n| `artisan` + `laravel\u002Fframework`                                       | Laravel application                   |\n| `bin\u002Fconsole` + `symfony\u002Fframework-bundle`                            | Symfony application                   |\n| `composer.json` without `artisan` \u002F `bin\u002Fconsole`                     | Composer package or legacy PHP        |\n| `package.json` with `next` \u002F `nuxt` \u002F `remix` \u002F `sveltekit` \u002F `astro` | Meta-framework SSR\u002FSSG app            |\n| `package.json` with `express` \u002F `fastify` \u002F `koa` \u002F `hapi`            | Node HTTP service                     |\n| `package.json` with `@nestjs\u002Fcore`                                    | NestJS application                    |\n| `pyproject.toml` with `django` \u002F `fastapi` \u002F `flask`                  | Python web app                        |\n| `go.mod` with `gin-gonic\u002Fgin` \u002F `labstack\u002Fecho` \u002F `gofiber\u002Ffiber`     | Go HTTP service                       |\n| Module system (`app\u002FModules\u002F`, `src\u002Fmodules\u002F`, `packages\u002F*`)          | Modular monolith \u002F monorepo           |\n| Multi-tenant signal (`customer_database`, tenant middleware, `RLS`)   | Multi-tenant SaaS                     |\n| `apps\u002F*` + `packages\u002F*` + `turbo.json` \u002F `nx.json` \u002F `pnpm-workspace` | Monorepo                              |\n\n### Legacy indicators (stack-aware)\n\n| Signal                                                                       | Meaning                       |\n|------------------------------------------------------------------------------|-------------------------------|\n| PHP: no `declare(strict_types=1)` in most files                              | Pre-modern PHP style          |\n| PHP: no typed properties \u002F return types                                      | Legacy PHP (\u003C 7.4)            |\n| PHP: no `phpstan.neon` \u002F `rector.php`                                        | No static analysis            |\n| TS: `\u002F\u002F @ts-ignore` \u002F `\u002F\u002F @ts-nocheck` density; `any` widespread             | Untyped TypeScript            |\n| TS: no `tsconfig.json` `strict: true`                                        | Loose TypeScript              |\n| JS: no ESLint config or `eslint.config.*`                                    | No linting                    |\n| Python: no type hints in most signatures; no `py.typed`                      | Untyped Python                |\n| Python: no `mypy.ini` \u002F `pyrightconfig.json` \u002F `ruff.toml`                   | No static analysis            |\n| Go: no `golangci.yml`                                                        | No lint pipeline              |\n| Rust: no `clippy.toml` and warnings ignored                                  | No lint hygiene               |\n| `var_dump()` \u002F `console.log()` \u002F `print()` \u002F `fmt.Println()` left in code   | Legacy debugging patterns     |\n| No tests or very few tests                                                   | Low test coverage             |\n| Mixed naming conventions across the same module                              | Inconsistent standards        |\n\n### Build & tooling (stack-agnostic)\n\n| Check         | How to detect                                                                                                                                                       |\n|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Task runner   | `Makefile`, `Taskfile.yml`, `justfile`, `package.json scripts`, `composer.json scripts`                                                                             |\n| Docker        | `docker-compose.yml`, `compose.yaml`, `Dockerfile`                                                                                                                  |\n| CI\u002FCD         | `.github\u002Fworkflows\u002F`, `.gitlab-ci.yml`, `.circleci\u002Fconfig.yml`, `azure-pipelines.yml`                                                                               |\n| Quality tools | PHP: `phpstan.neon`, `ecs.php`, `rector.php`. TS\u002FJS: `eslint.config.*`, `.prettierrc*`, `tsconfig.json`. Python: `ruff.toml`, `mypy.ini`. Go: `.golangci.yml`. Rust: `clippy.toml` |\n| Editor config | `.editorconfig`                                                                                                                                                     |\n| Code review   | `CODEOWNERS`, PR templates (`.github\u002Fpull_request_template.md`)                                                                                                     |\n| Dependencies  | Lockfile presence: `composer.lock`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `poetry.lock`, `uv.lock`, `go.sum`, `Cargo.lock`                            |\n\n## Integration with other skills\n\n| Skill              | How it's used                                               |\n|--------------------|-------------------------------------------------------------|\n| `project-docs`     | Read existing docs before analyzing each area               |\n| `module-management`           | Detect and inventory modules                                |\n| `context-create`          | Create\u002Fupdate context documents                             |\n| `feature-planning` | Identify planned but undocumented features                  |\n| `agent-docs-writing`       | Audit and maintain agent documentation                      |\n| `roadmap-management`  | Review roadmap status                                       |\n| `api-endpoint`     | Understand endpoint structure for API analysis              |\n| `database`         | Understand schema and multi-tenancy for data layer analysis |\n\n## Workflow\n\n1. **Ask scope**: Full analysis or specific area (e.g. only domains, only API)?\n2. **Run phases incrementally** — show findings after each phase, ask before continuing.\n3. **Write files after each phase** — don't batch all writing to the end.\n4. **Ask before creating each file** with numbered options:\n   ```\n   > 1. Create — {filename}\n   > 2. Skip\n   ```\n5. **Update existing files** if re-running analysis — don't create duplicates.\n\n\n## Output format\n\n1. Structured analysis document in agents\u002Fevidence\u002Fanalysis\u002F\n2. Tech stack inventory with versions and dependencies\n3. Architecture diagram or module map\n\n## Gotcha\n\n- Full project analysis can take several minutes — warn the user about the time investment.\n- Don't analyze parts of the codebase that the user hasn't asked about — respect scope.\n- Analysis documents go in `agents\u002Fevidence\u002Fanalysis\u002F`, not in `.augment\u002F`.\n\n## Do NOT\n\n- Do NOT create analysis files without asking — always confirm each creation.\n- Do NOT modify existing code — this is analysis only.\n- Do NOT commit or push.\n- Do NOT overwhelm the user — present findings incrementally, one phase at a time.\n- Do NOT analyze third-party code in `vendor\u002F` or `node_modules\u002F`.\n- Do NOT duplicate content that already exists in `agents\u002Freference\u002Fdocs\u002F` or `agents\u002Fsettings\u002Fcontexts\u002F` —\n  reference it instead. Analysis files complement existing docs, they don't replace them.\n","# project-analyzer\n\n## When to use\n\nUse this skill when:\n\n- Starting work on an unfamiliar project\n- Onboarding to a new codebase\n- Auditing the current state of agent docs, contexts, and features\n- Creating a baseline understanding of the project for future work\n- Generating comprehensive project documentation for knowledge transfer\n\n\nDo NOT use when:\n- Small, focused code changes\n- Regular feature development\n\n## Procedure: Analyze a project\n\nA **project analysis** is a systematic walkthrough of the entire codebase that:\n\n1. **Detects** — framework, language, tech stack, patterns, legacy vs. modern\n2. **Inventories** — modules, services, models, endpoints, tests\n3. **Analyzes** — business domains, data flows, API contracts, dependencies\n4. **Documents** — writes structured analysis files to `agents\u002Fevidence\u002Fanalysis\u002F`\n5. **Assesses** — identifies gaps, technical debt, missing docs\n\nIt orchestrates other skills and commands to produce a comprehensive picture.\n\n[`procedure.yaml`](procedure.yaml) holds the order: run phases one at a time, each only after the previous met its exit. A `judgement` exit is sequenced, not verified: state your decision first. Phase 3–6 without its layer writes `not-applicable.md` (Phase 6: `service-map.md`) saying why — an absent layer is a finding, not a skip.\n\n1. [Phase 1: Project overview](references\u002Fsteps\u002F01-project-overview.md) — exit: `check: analysis-overview-matches-manifests`\n2. [Phase 2: Architecture](references\u002Fsteps\u002F02-architecture.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Farchitecture`\n3. [Phase 3: Data layer](references\u002Fsteps\u002F03-data-layer.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fmodels`\n4. [Phase 4: Business domains](references\u002Fsteps\u002F04-business-domains.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fdomains`\n5. [Phase 5: API surface](references\u002Fsteps\u002F05-api-surface.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fapi`\n6. [Phase 6: Service map](references\u002Fsteps\u002F06-service-map.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Fservices\u002Fservice-map.md`\n7. [Phase 7: Module inventory (if modules exist)](references\u002Fsteps\u002F07-module-inventory.md) — exit: `judgement`\n8. [Phase 8: Infrastructure & testing](references\u002Fsteps\u002F08-infrastructure-and-testing.md) — exit: `exists: agents\u002Fevidence\u002Fanalysis\u002Ftesting\u002Ftest-map.md`\n9. [Phase 9: Agent docs audit](references\u002Fsteps\u002F09-agent-docs-audit.md) — exit: `judgement`\n10. [Phase 10: Gap analysis & action plan](references\u002Fsteps\u002F10-gap-analysis.md) — exit: `judgement`\n\n## Analysis output\n\nAll analysis results are written to `agents\u002Fevidence\u002Fanalysis\u002F` in a structured directory layout.\nThe goal: **someone could rebuild the project from these documents alone.**\n\n### Directory structure\n\n```\nagents\u002Fevidence\u002Fanalysis\u002F\n├── overview.md                  ← Project profile, tech stack, architecture summary\n├── architecture\u002F\n│   ├── database.md              ← Schema, connections, multi-tenancy, migrations\n│   ├── api.md                   ← Versioning, routes, middleware, auth flow\n│   ├── infrastructure.md        ← Docker, CI\u002FCD, deployment, AWS, monitoring\n│   └── patterns.md              ← Design patterns used (Repository, Service, Pipeline, etc.)\n├── domains\u002F\n│   ├── {domain}.md              ← One file per business domain (see below)\n│   └── ...\n├── modules\u002F\n│   ├── {module}.md              ← One file per module (see below)\n│   └── ...\n├── models\u002F\n│   ├── api-database.md          ← All api_database models, relationships, key columns\n│   └── customer-database.md     ← All customer_database models, relationships, key columns\n├── services\u002F\n│   └── service-map.md           ← All services with purpose, dependencies, key methods\n├── api\u002F\n│   ├── endpoints-v1.md          ← All v1 endpoints: route, controller, request, resource\n│   ├── endpoints-v2.md          ← All v2 endpoints: route, controller, request, resource\n│   └── contracts.md             ← API contracts: request\u002Fresponse shapes, validation rules\n└── testing\u002F\n    └── test-map.md              ← Test suites, coverage areas, test data strategy\n```\n\n### Domain analysis files\n\nEach business domain gets its own file in `agents\u002Fevidence\u002Fanalysis\u002Fdomains\u002F`. A domain groups\nrelated models, services, controllers, jobs, and events around a business concept:\n\n| Domain             | What it covers                                           |\n|--------------------|----------------------------------------------------------|\n| `projects.md`      | Construction sites, positions, project status, geocoding |\n| `planning.md`      | Appointments, crew assignments, capacity planning        |\n| `users.md`         | Employees, roles, permissions, authentication            |\n| `equipment.md`     | Machines, vehicles, repairs, time registration           |\n| `working-times.md` | Time tracking, absences, wage types, logs                |\n| `reports.md`       | Daily reports, images, measured quantities               |\n| `files.md`         | File uploads, file links, storage                        |\n| `customers.md`     | Tenant management, customer config, modules              |\n| `webhooks.md`      | Webhook dispatching, retry logic                         |\n| `imports.md`       | Client software imports (cross-reference with module)    |\n| `gps.md`           | GPS tracking, geofencing                                 |\n| `notifications.md` | Email, push, private messages, Slack                     |\n| `dashboard.md`     | Dashboard widgets, statistics                            |\n\nNot every project has all domains. Only create files for domains that actually exist.\n\n### Domain file template\n\nEach domain file should contain:\n\n```markdown\n# Domain: {Name}\n\n## Purpose\n\n{What this domain does in 2-3 sentences}\n\n## Models\n\n| Model | Table | Connection | Key Relationships |\n|---|---|---|---|\n\n## Services\n\n| Service | Purpose | Key Methods |\n|---|---|---|\n\n## Controllers (API Endpoints)\n\n| Endpoint | Controller | Request | Resource |\n|---|---|---|---|\n\n## Jobs & Events\n\n| Class | Type | Trigger | What it does |\n|---|---|---|---|\n\n## Business Rules\n\n- {Rule 1: e.g. \"A project can only be deleted if it has no working times\"}\n- {Rule 2}\n\n## Data Flow\n\n{Describe how data moves through this domain — from input to storage to output}\n\n## Dependencies\n\n- Depends on: {other domains}\n- Depended on by: {other domains}\n```\n\n### Module analysis files\n\nEach module gets its own file in `agents\u002Fevidence\u002Fanalysis\u002Fmodules\u002F`. Format:\n\n```markdown\n# Module: {Name}\n\n## Purpose\n\n{What this module does}\n\n## Structure\n\n{Directory tree with key files}\n\n## Public API\n\n{What other parts of the app use from this module: Services, Events, Models}\n\n## Internal Components\n\n{Controllers, Jobs, Commands, Listeners that are module-internal}\n\n## Configuration\n\n{Config files, .env variables, feature flags}\n\n## Testing\n\n{Test suites, test data, stubs}\n```\n\n## Detection checklist\n\n### Framework & language (multi-stack)\n\n| Check                  | How to detect                                                                |\n|------------------------|------------------------------------------------------------------------------|\n| PHP runtime + version  | `composer.json` → `require.php`                                              |\n| Laravel application    | `artisan` file at repo root + `laravel\u002Fframework` in `composer.json`         |\n| Symfony application    | `bin\u002Fconsole` + `symfony\u002Fframework-bundle` in `composer.json`                |\n| Composer package       | `composer.json` without `artisan` \u002F `bin\u002Fconsole`                            |\n| Node.js runtime        | `package.json` exists                                                        |\n| TypeScript             | `tsconfig.json` exists                                                       |\n| Frontend framework     | `package.json` → `react`, `vue`, `svelte`, `solid`, `astro`, `@angular\u002Fcore` |\n| Meta-framework         | `package.json` → `next`, `nuxt`, `remix`, `sveltekit`, `astro`               |\n| Python runtime         | `pyproject.toml`, `requirements.txt`, `setup.py`, or `Pipfile`               |\n| Python framework       | `pyproject.toml` \u002F `requirements.txt` → `django`, `fastapi`, `flask`         |\n| Go module              | `go.mod` exists                                                              |\n| Rust crate \u002F workspace | `Cargo.toml` exists                                                          |\n| Ruby app               | `Gemfile` → `rails`, `sinatra`                                               |\n| .NET project           | `*.csproj`, `*.fsproj`, or `global.json`                                     |\n| Java \u002F Kotlin          | `pom.xml`, `build.gradle`, or `build.gradle.kts`                             |\n\nAfter detecting **any** match, record the stack in the analysis output and select the matching `project-analysis-*` sub-skill (Laravel, Symfony, Next.js, React, Node\u002FExpress, Zend\u002FLaminas) — fall back to `project-analysis-core` if no framework-specific sub-skill applies.\n\n### Project type\n\n| Signal                                                                | Type                                  |\n|-----------------------------------------------------------------------|---------------------------------------|\n| `artisan` + `laravel\u002Fframework`                                       | Laravel application                   |\n| `bin\u002Fconsole` + `symfony\u002Fframework-bundle`                            | Symfony application                   |\n| `composer.json` without `artisan` \u002F `bin\u002Fconsole`                     | Composer package or legacy PHP        |\n| `package.json` with `next` \u002F `nuxt` \u002F `remix` \u002F `sveltekit` \u002F `astro` | Meta-framework SSR\u002FSSG app            |\n| `package.json` with `express` \u002F `fastify` \u002F `koa` \u002F `hapi`            | Node HTTP service                     |\n| `package.json` with `@nestjs\u002Fcore`                                    | NestJS application                    |\n| `pyproject.toml` with `django` \u002F `fastapi` \u002F `flask`                  | Python web app                        |\n| `go.mod` with `gin-gonic\u002Fgin` \u002F `labstack\u002Fecho` \u002F `gofiber\u002Ffiber`     | Go HTTP service                       |\n| Module system (`app\u002FModules\u002F`, `src\u002Fmodules\u002F`, `packages\u002F*`)          | Modular monolith \u002F monorepo           |\n| Multi-tenant signal (`customer_database`, tenant middleware, `RLS`)   | Multi-tenant SaaS                     |\n| `apps\u002F*` + `packages\u002F*` + `turbo.json` \u002F `nx.json` \u002F `pnpm-workspace` | Monorepo                              |\n\n### Legacy indicators (stack-aware)\n\n| Signal                                                                       | Meaning                       |\n|------------------------------------------------------------------------------|-------------------------------|\n| PHP: no `declare(strict_types=1)` in most files                              | Pre-modern PHP style          |\n| PHP: no typed properties \u002F return types                                      | Legacy PHP (\u003C 7.4)            |\n| PHP: no `phpstan.neon` \u002F `rector.php`                                        | No static analysis            |\n| TS: `\u002F\u002F @ts-ignore` \u002F `\u002F\u002F @ts-nocheck` density; `any` widespread             | Untyped TypeScript            |\n| TS: no `tsconfig.json` `strict: true`                                        | Loose TypeScript              |\n| JS: no ESLint config or `eslint.config.*`                                    | No linting                    |\n| Python: no type hints in most signatures; no `py.typed`                      | Untyped Python                |\n| Python: no `mypy.ini` \u002F `pyrightconfig.json` \u002F `ruff.toml`                   | No static analysis            |\n| Go: no `golangci.yml`                                                        | No lint pipeline              |\n| Rust: no `clippy.toml` and warnings ignored                                  | No lint hygiene               |\n| `var_dump()` \u002F `console.log()` \u002F `print()` \u002F `fmt.Println()` left in code   | Legacy debugging patterns     |\n| No tests or very few tests                                                   | Low test coverage             |\n| Mixed naming conventions across the same module                              | Inconsistent standards        |\n\n### Build & tooling (stack-agnostic)\n\n| Check         | How to detect                                                                                                                                                       |\n|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Task runner   | `Makefile`, `Taskfile.yml`, `justfile`, `package.json scripts`, `composer.json scripts`                                                                             |\n| Docker        | `docker-compose.yml`, `compose.yaml`, `Dockerfile`                                                                                                                  |\n| CI\u002FCD         | `.github\u002Fworkflows\u002F`, `.gitlab-ci.yml`, `.circleci\u002Fconfig.yml`, `azure-pipelines.yml`                                                                               |\n| Quality tools | PHP: `phpstan.neon`, `ecs.php`, `rector.php`. TS\u002FJS: `eslint.config.*`, `.prettierrc*`, `tsconfig.json`. Python: `ruff.toml`, `mypy.ini`. Go: `.golangci.yml`. Rust: `clippy.toml` |\n| Editor config | `.editorconfig`                                                                                                                                                     |\n| Code review   | `CODEOWNERS`, PR templates (`.github\u002Fpull_request_template.md`)                                                                                                     |\n| Dependencies  | Lockfile presence: `composer.lock`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `poetry.lock`, `uv.lock`, `go.sum`, `Cargo.lock`                            |\n\n## Integration with other skills\n\n| Skill              | How it's used                                               |\n|--------------------|-------------------------------------------------------------|\n| `project-docs`     | Read existing docs before analyzing each area               |\n| `module-management`           | Detect and inventory modules                                |\n| `context-create`          | Create\u002Fupdate context documents                             |\n| `feature-planning` | Identify planned but undocumented features                  |\n| `agent-docs-writing`       | Audit and maintain agent documentation                      |\n| `roadmap-management`  | Review roadmap status                                       |\n| `api-endpoint`     | Understand endpoint structure for API analysis              |\n| `database`         | Understand schema and multi-tenancy for data layer analysis |\n\n## Workflow\n\n1. **Ask scope**: Full analysis or specific area (e.g. only domains, only API)?\n2. **Run phases incrementally** — show findings after each phase, ask before continuing.\n3. **Write files after each phase** — don't batch all writing to the end.\n4. **Ask before creating each file** with numbered options:\n   ```\n   > 1. Create — {filename}\n   > 2. Skip\n   ```\n5. **Update existing files** if re-running analysis — don't create duplicates.\n\n\n## Output format\n\n1. Structured analysis document in agents\u002Fevidence\u002Fanalysis\u002F\n2. Tech stack inventory with versions and dependencies\n3. Architecture diagram or module map\n\n## Gotcha\n\n- Full project analysis can take several minutes — warn the user about the time investment.\n- Don't analyze parts of the codebase that the user hasn't asked about — respect scope.\n- Analysis documents go in `agents\u002Fevidence\u002Fanalysis\u002F`, not in `.augment\u002F`.\n\n## Do NOT\n\n- Do NOT create analysis files without asking — always confirm each creation.\n- Do NOT modify existing code — this is analysis only.\n- Do NOT commit or push.\n- Do NOT overwhelm the user — present findings incrementally, one phase at a time.\n- Do NOT analyze third-party code in `vendor\u002F` or `node_modules\u002F`.\n- Do NOT duplicate content that already exists in `agents\u002Freference\u002Fdocs\u002F` or `agents\u002Fsettings\u002Fcontexts\u002F` —\n  reference it instead. Analysis files complement existing docs, they don't replace them.\n",{"name":5,"packs":49,"domain":41,"model_tier":30,"workspaces":51,"description":7,"context_window":53},[50],"engineering-base",[52],"engineering","large","main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Fproject-analyzer",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-11 06:19:40",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add event4u-app\u002Fagent-config --skill project-analyzer",{"tool":69,"command":70},"bunx","bunx skills add event4u-app\u002Fagent-config --skill project-analyzer",{"tool":72,"command":73},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill project-analyzer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002FSKILL.md",true,[77,83,87,91,95,99,103,107,111,115,119,123],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"evals\u002Ftriggers.json","REFERENCE","参考文档",1185,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Fevals\u002Ftriggers.json",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"procedure.yaml",1465,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Fprocedure.yaml",{"path":88,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fsteps\u002F01-project-overview.md",304,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F01-project-overview.md",{"path":92,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fsteps\u002F02-architecture.md",299,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F02-architecture.md",{"path":96,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fsteps\u002F03-data-layer.md",293,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F03-data-layer.md",{"path":100,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fsteps\u002F04-business-domains.md",338,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F04-business-domains.md",{"path":104,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fsteps\u002F05-api-surface.md",310,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F05-api-surface.md",{"path":108,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fsteps\u002F06-service-map.md",258,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F06-service-map.md",{"path":112,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fsteps\u002F07-module-inventory.md",263,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F07-module-inventory.md",{"path":116,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fsteps\u002F08-infrastructure-and-testing.md",251,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F08-infrastructure-and-testing.md",{"path":120,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fsteps\u002F09-agent-docs-audit.md",246,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F09-agent-docs-audit.md",{"path":124,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fsteps\u002F10-gap-analysis.md",289,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analyzer\u002Freferences\u002Fsteps\u002F10-gap-analysis.md",[128,142,154,165,177,187],{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":135,"publishedAt":44},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[134],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[136,137,138,139,140,141],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":149,"publishedAt":44},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[148],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[138,150,151,152,37,141,153],"portable","portable fixture","engineer","MCP",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":161,"publishedAt":44},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[160],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[151,162,150,138,163,30,164,141],"non portable fixture","semantic","runtime",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":44},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[171],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[173,174,175,176],"candidate zero width","candidate","ZeRO","prose",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":184,"publishedAt":44},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[183],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[185,174,176,186],"candidate disclosure suppression","user",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":194,"publishedAt":44},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[193],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[195,174,196,197,198,199],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]