{"id":51429515,"url":"https://github.com/bnomei/scip-laravel","last_synced_at":"2026-07-05T03:02:17.916Z","repository":{"id":346059926,"uuid":"1187117879","full_name":"bnomei/scip-laravel","owner":"bnomei","description":"Generate detailed SCIP file for Laravel projects","archived":false,"fork":false,"pushed_at":"2026-03-22T01:54:00.000Z","size":497,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T21:29:44.642Z","etag":null,"topics":["ai","ai-agents","code-intelligence","code-navigation","codeintel","flux","indexer","inertia","laravel","livewire","ranger","scip","sourcegraph","static-analysis","surveyor"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bnomei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"bnomei","buy_me_a_coffee":"bnomei"}},"created_at":"2026-03-20T11:08:25.000Z","updated_at":"2026-03-22T01:54:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bnomei/scip-laravel","commit_stats":null,"previous_names":["bnomei/scip-laravel"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/bnomei/scip-laravel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnomei%2Fscip-laravel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnomei%2Fscip-laravel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnomei%2Fscip-laravel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnomei%2Fscip-laravel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bnomei","download_url":"https://codeload.github.com/bnomei/scip-laravel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnomei%2Fscip-laravel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35141966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","code-intelligence","code-navigation","codeintel","flux","indexer","inertia","laravel","livewire","ranger","scip","sourcegraph","static-analysis","surveyor"],"created_at":"2026-07-05T03:02:14.075Z","updated_at":"2026-07-05T03:02:17.904Z","avatar_url":"https://github.com/bnomei.png","language":"PHP","funding_links":["https://github.com/sponsors/bnomei","https://buymeacoffee.com/bnomei","https://www.buymeacoffee.com/bnomei"],"categories":[],"sub_categories":[],"readme":"# scip-laravel\n\n[![Laravel 11-13](https://flat.badgen.net/badge/Laravel/11-13?color=F05340)](https://laravel.com)\n![PHP 8.3+](https://flat.badgen.net/badge/PHP/8.3%2B?color=4E5B93\u0026icon=php\u0026label)\n[![Tests](https://github.com/bnomei/scip-laravel/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/bnomei/scip-laravel/actions/workflows/tests.yml)\n[![License](https://flat.badgen.net/badge/license/MIT?color=999999)](LICENSE)\n[![Discord](https://flat.badgen.net/badge/discord/bnomei?color=7289da\u0026icon=discord\u0026label)](https://discordapp.com/users/bnomei)\n[![Buymecoffee](https://flat.badgen.net/badge/icon/donate?icon=buymeacoffee\u0026color=FF813F\u0026label)](https://www.buymeacoffee.com/bnomei)\n\n`scip-laravel` is a Laravel-aware SCIP generator for Laravel applications. Install it into the Laravel app you want to index as a dev dependency only. It is an indexing and code-intelligence tool, not a production runtime dependency.\n\n`scip-laravel` builds on:\n\n- [`scip-php`](https://github.com/davidrjenni/scip-php) for baseline PHP SCIP indexing\n- [`Surveyor`](https://github.com/laravel/surveyor) for Laravel-aware analysis metadata\n- [`Ranger`](https://github.com/laravel/ranger) for Laravel application inventories such as routes, models, broadcast surfaces, and Inertia pages\n\nConsumers should execute the repo-local `vendor/bin/scip-laravel` binary to generate a merged `index.scip`. What this package adds on top of those three pillars is the Laravel-specific merge and enrichment layer, so AI agents can retrieve Laravel-native concepts from the SCIP file, not just raw PHP symbols. In practice that includes:\n\n- Eloquent model members such as declared properties, declared methods, static methods, constants, attributes, accessors, mutators, relations, and supported model-style reads and writes from PHP, Blade, and Volt; syntactically declared members resolve precisely when statically knowable, while dynamic Eloquent members such as magic attributes, unresolved relation-style properties, and other runtime-only indirection remain best-effort\n- named routes as first-class symbols, with definitions in `routes/*.php` and references from `route(...)`, `to_route(...)`, `request()-\u003erouteIs(...)`, `redirect()-\u003eroute(...)`, plus controller links and supported Volt and full-page Livewire route anchors\n- Blade views and component edges from `view()`, `@extends`, `@include*`, `\u003cx-...\u003e`, `\u003clivewire:...\u003e`, `@livewire(...)`, and supported local prefixed components such as `flux:*`\n- Livewire and Volt component semantics such as supported `wire:model`, `wire:click`, `wire:submit`, Blade-local props and slots, route-bound model usage, and validation keys\n- Inertia page names and contract symbols for page props and shared data from `Inertia::render(...)` back to local page files\n- broadcast channel names and payload contract symbols from channel definitions, `broadcastOn()`, and broadcast payload usage\n- config keys as first-class symbols from `config/*.php`, with references from `config(...)`, `Config::get(...)`, and `app('config')-\u003eget(...)`\n- translation keys as first-class precise symbols from PHP and JSON lang files, with raw-key display names and references from `__()`, `trans()`, `trans_choice()`, `Lang::get()`, and `@lang`, using one stable symbol per raw key shared across locale variants in the same translation family\n- environment variables as first-class symbols from `.env.example` and `.env`, with references from `env(...)` lookups including defaulted forms such as `env('KEY', false)`\n\n## Compatibility\n\n- Laravel: 11, 12, and 13\n- PHP: `^8.3`\n\nThe package bundles a compatible `scip-php` runtime inside this repository so Composer installs do not depend on an unpublished upstream tag.\n\nThe vendored `packages/scip-php` copy is intentionally patched locally for performance and bootstrap compatibility. See [packages/scip-php/LOCAL_PATCHES.md](/Users/bnomei/Sites/scip-laravel/packages/scip-php/LOCAL_PATCHES.md) and do not update that directory blindly from upstream.\n\n## Install\n\nInstall it into the target Laravel app as a local dev dependency:\n\n```bash\ncomposer require --dev bnomei/scip-laravel\n```\n\nDo not add it as a production dependency. Consumers should invoke the repo-local binary from that install.\n\nThe target Laravel app must have a readable `composer.json`, `composer.lock`, `vendor/autoload.php`, and `vendor/composer/installed.php`.\n\n## Usage\n\nGenerate `index.scip` in the current Laravel app:\n\n```bash\nvendor/bin/scip-laravel\n```\n\nGenerate to a custom path:\n\n```bash\nvendor/bin/scip-laravel --output=build/index.scip\n```\n\nIndex a different Laravel app from outside its root:\n\n```bash\nvendor/bin/scip-laravel /path/to/laravel-app\n```\n\nShow the CLI contract:\n\n```bash\nvendor/bin/scip-laravel --help\n```\n\n## Usage With AI-Assisted Development\n\nIf you use AI coding tools, [Frigg](https://github.com/bnomei/frigg) is a good companion to `scip-laravel`.\n\n`scip-laravel` generates a Laravel-aware `index.scip`. Frigg is a local-first, read-only MCP server for code understanding that can use optional SCIP overlays alongside source-backed repository indexing. In practice, that means better navigation and code search for PHP, Blade, and adjacent repositories without turning this package into a hosted service or runtime dependency. Think of it as PHPStorm with the Laravel Idea plugin but for your agents.\n\n## CLI\n\n```text\nvendor/bin/scip-laravel [--output=index.scip] [--config=scip-laravel.php] [--mode=safe|full] [--strict] [--feature=models,routes,views,inertia,broadcast,config,translations,env] [target-root]\n```\n\n- `target-root` defaults to the current working directory.\n- Relative `target-root` values resolve from the current working directory.\n- Relative `--config` and `--output` values resolve from the resolved target root.\n- `--feature` is an explicit allow-list override.\n\n## Modes\n\n- `full` is the default whenever `--mode` is omitted. It boots the target app as-is and prioritizes maximum discovery.\n- `safe` applies deterministic runtime overrides before Laravel boot for cache, session, queue, mail, filesystem, broadcast, and database-related settings where possible. Use `--mode=safe` when you need that behavior.\n- `--strict` makes enabled enricher failures fatal. Without it, post-baseline enricher failures fail open.\n\n## Config\n\nAn optional repo-root `scip-laravel.php` file may return:\n\n```php\n\u003c?php\n\nreturn [\n    'output' =\u003e 'index.scip',\n    'mode' =\u003e 'full',\n    'strict' =\u003e false,\n    'features' =\u003e [\n        'models',\n        'routes',\n        'views',\n        'inertia',\n        'broadcast',\n        'config',\n        'translations',\n        'env',\n    ],\n];\n```\n\nCLI flags override config defaults for `output`, `config`, `mode`, and `feature`. If `--mode` is omitted, the config `mode` is used when present; otherwise the default is `full`. `--strict` only elevates to `true`.\n\n## Notes\n\n- Smoke-tested in this repository against a real Laravel 13 skeleton.\n- If the target is not a supported Laravel app, the command exits with an explicit diagnostic.\n\n## Local Testbeds\n\nA repeatable local Flux testbed is available under [fixtures/flux-app/README.md](/Users/bnomei/Sites/scip-laravel/fixtures/flux-app/README.md).\n\nPrepare the local checkout:\n\n```bash\n./fixtures/flux-app/scaffold.sh\n```\n\nRun `scip-laravel` against it:\n\n```bash\n./fixtures/flux-app/index.sh\n```\n\nRecent local warmed runs on the prepared Flux acceptance fixture are around the 0.8 second mark end-to-end via `./fixtures/flux-app/index.sh`, so it is also the easiest way to sanity-check indexing performance while working on compiler changes.\n\nPrepare the acceptance-ready fixture variant with the repo-owned probes and normalized no-dev install:\n\n```bash\n./fixtures/flux-app/prepare-acceptance.sh\n```\n\n## Tests\n\nRun the full package suite:\n\n```bash\nvendor/bin/phpunit\n```\n\nRun the Laravel acceptance integration coverage:\n\n```bash\nvendor/bin/phpunit --filter LaravelEnrichersAcceptanceTest\nvendor/bin/phpunit --filter RuntimeModesAcceptanceTest\n```\n\nRun the deterministic Flux snapshot verification:\n\n```bash\nvendor/bin/phpunit --filter FluxSnapshotTest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnomei%2Fscip-laravel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbnomei%2Fscip-laravel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnomei%2Fscip-laravel/lists"}