@ericrisco/rsc 3.7.1 → 3.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.7.1",
2
+ "version": "3.7.2",
3
3
  "counts": {
4
4
  "skills": 274,
5
5
  "agents": 34,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ericrisco/rsc",
3
- "version": "3.7.1",
3
+ "version": "3.7.2",
4
4
  "description": "A guided harness builder that turns your goal into a minimal, verified AI-agent setup using strict best practices.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,11 +18,13 @@ export const ONBOARDING_VALUES = Object.freeze({
18
18
  });
19
19
 
20
20
  const ignored = new Set([
21
- '.git', '.rsc', 'node_modules', '.venv', '.next', 'dist', 'build', 'coverage', '__pycache__', '.dart_tool',
21
+ // `vendor` is Composer's (and Go's/Bundler's) `node_modules`: third-party code, not the project. A
22
+ // Laravel app was read as Python because one vendored package shipped a `docs/requirements.txt` (#325).
23
+ '.git', '.rsc', 'node_modules', 'vendor', '.venv', '.next', 'dist', 'build', 'coverage', '__pycache__', '.dart_tool',
22
24
  '.claude', '.codex', '.cursor', '.opencode', '.amp', '.jules', '.zed', '.gemini', '.antigravity',
23
25
  '.windsurf', '.clinerules', '.roo', '.continue', '.junie', '.kiro', '.aider',
24
26
  ]);
25
- const manifests = new Set(['package.json', 'pyproject.toml', 'go.mod', 'Cargo.toml', 'pubspec.yaml', 'requirements.txt']);
27
+ const manifests = new Set(['package.json', 'pyproject.toml', 'go.mod', 'Cargo.toml', 'pubspec.yaml', 'requirements.txt', 'composer.json']);
26
28
  const sourceExt = new Set(['.js', '.jsx', '.ts', '.tsx', '.py', '.go', '.rs', '.dart', '.java', '.kt', '.swift', '.php', '.rb']);
27
29
 
28
30
  const clean = (value) => String(value ?? '').trim();
@@ -152,6 +154,14 @@ export function scanProject(root = process.cwd()) {
152
154
  } catch { stacks.add('node'); }
153
155
  }
154
156
  if (entry.name === 'pyproject.toml' || entry.name === 'requirements.txt') stacks.add('python');
157
+ if (entry.name === 'composer.json') {
158
+ stacks.add('php');
159
+ try {
160
+ const composer = JSON.parse(readFileSync(path, 'utf8'));
161
+ const deps = { ...(composer.require || {}), ...(composer['require-dev'] || {}) };
162
+ if (deps['laravel/framework']) stacks.add('laravel');
163
+ } catch { /* an unreadable composer.json is still PHP */ }
164
+ }
155
165
  if (entry.name === 'go.mod') stacks.add('go');
156
166
  if (entry.name === 'Cargo.toml') stacks.add('rust');
157
167
  if (entry.name === 'pubspec.yaml') stacks.add('flutter');