@haus-tech/haus-workflow 0.25.1 → 0.26.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.26.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.25.1...v0.26.0) (2026-06-15)
4
+
5
+ ### Features
6
+
7
+ - **catalog:** exempt agent content from the only-npx-tsx rule ([#107](https://github.com/WeAreHausTech/haus-workflow/issues/107)) ([e335ecc](https://github.com/WeAreHausTech/haus-workflow/commit/e335eccd9e33e70781f3172cc96952fc070c28a9))
8
+
9
+ ### Bug Fixes
10
+
11
+ - **scanner:** detect php stack so php-gated catalog items are recommendable ([#109](https://github.com/WeAreHausTech/haus-workflow/issues/109)) ([4daa09e](https://github.com/WeAreHausTech/haus-workflow/commit/4daa09e2ef2e5133f43437b5a6e73277b8c6ab69))
12
+
3
13
  ## [0.25.1](https://github.com/WeAreHausTech/haus-workflow/compare/v0.25.0...v0.25.1) (2026-06-15)
4
14
 
5
15
  ## [0.25.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.24.1...v0.25.0) (2026-06-12)
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Haus Tech AB
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/cli.js CHANGED
@@ -119,6 +119,7 @@ var validation_rules_default = {
119
119
  ],
120
120
  allowedNpxPattern: { source: "\\bnpx\\s+tsx\\b", flags: "i" },
121
121
  anyNpxPattern: { source: "\\bnpx\\s+\\S+", flags: "i" },
122
+ npxTsxOnlyExemptTypes: ["agent"],
122
123
  httpUrlPattern: { source: "^http:\\/\\/", flags: "i" },
123
124
  placeholderPattern: { source: "\\bTODO\\b|\\bPLACEHOLDER\\b", flags: "i" },
124
125
  allowedStacks: [
@@ -239,6 +240,7 @@ var REQUIRED_SKILL_FRONTMATTER = validation_rules_default.requiredSkillFrontmatt
239
240
  var RISKY_INSTALL_PATTERNS = validation_rules_default.riskyInstallPatterns.map(toRegExp);
240
241
  var ALLOWED_NPX_PATTERN = toRegExp(validation_rules_default.allowedNpxPattern);
241
242
  var ANY_NPX_PATTERN = toRegExp(validation_rules_default.anyNpxPattern);
243
+ var NPX_TSX_ONLY_EXEMPT_TYPES = validation_rules_default.npxTsxOnlyExemptTypes ?? [];
242
244
  var HTTP_URL_PATTERN = toRegExp(validation_rules_default.httpUrlPattern);
243
245
  var PLACEHOLDER_PATTERN = toRegExp(validation_rules_default.placeholderPattern);
244
246
  var ALLOWED_STACKS = validation_rules_default.allowedStacks;
@@ -317,13 +319,14 @@ ${extractUseWhenSection(text)}`;
317
319
  // src/catalog/ingest-catalog.ts
318
320
  function validateCatalogItem(item, content2) {
319
321
  const label = item.id;
322
+ const checkNonTsxNpx = !NPX_TSX_ONLY_EXEMPT_TYPES.includes(item.type);
320
323
  const lines = content2.split(/\r?\n/);
321
324
  for (let i = 0; i < lines.length; i++) {
322
325
  const line2 = lines[i] ?? "";
323
326
  if (RISKY_INSTALL_PATTERNS.some((re) => re.test(line2))) {
324
327
  return { ok: false, reason: `${label}: risky install pattern at line ${i + 1}` };
325
328
  }
326
- if (ANY_NPX_PATTERN.test(line2) && !ALLOWED_NPX_PATTERN.test(line2)) {
329
+ if (checkNonTsxNpx && ANY_NPX_PATTERN.test(line2) && !ALLOWED_NPX_PATTERN.test(line2)) {
327
330
  return { ok: false, reason: `${label}: disallowed npx at line ${i + 1}` };
328
331
  }
329
332
  }
@@ -2471,6 +2474,11 @@ var STACK_RULES = [
2471
2474
  stack: ["backend", "graphql"],
2472
2475
  any: [fileEndsWith(".graphql"), fileEndsWith("schema.graphql")]
2473
2476
  },
2477
+ // PHP (Composer-managed) — broad language signal so php-tooling catalog items
2478
+ // (e.g. the php-reviewer agent gated on { stack: 'php' }) are recommendable on any
2479
+ // Composer project. Placed before laravel/wordpress so 'php' precedes the
2480
+ // framework-specific stacks in the backend bucket.
2481
+ { stack: ["backend", "php"], any: [fileEndsWith("composer.json")] },
2474
2482
  { stack: ["backend", "laravel"], any: [dep("laravel/framework")] },
2475
2483
  { stack: ["backend", "laravel"], any: [fileIncludes("app/Providers/"), fileIncludes("routes/")] },
2476
2484
  { stack: ["backend", "wordpress"], any: [fileEndsWith("wp-config.php"), dep("roots/wordpress")] },
@@ -4386,12 +4394,19 @@ function auditTemplateContent(manifestDir, absPath, itemId) {
4386
4394
  failures.push(...auditForbiddenTagsInText(text, `${itemId}: ${rel}`));
4387
4395
  return failures;
4388
4396
  }
4397
+ var DIR_ITEM_TYPE = {
4398
+ skills: "skill",
4399
+ agents: "agent",
4400
+ templates: "template",
4401
+ commands: "command"
4402
+ };
4389
4403
  function auditMarkdownContent(manifestDir) {
4390
4404
  const failures = [];
4391
4405
  const dirs = ["skills", "agents", "templates", "commands"];
4392
4406
  for (const dir of dirs) {
4393
4407
  const abs = path26.join(manifestDir, dir);
4394
4408
  if (!fs20.existsSync(abs)) continue;
4409
+ const checkNonTsxNpx = !NPX_TSX_ONLY_EXEMPT_TYPES.includes(DIR_ITEM_TYPE[dir] ?? "");
4395
4410
  walkMd(abs, (file) => {
4396
4411
  const text = fs20.readFileSync(file, "utf8");
4397
4412
  const rel = path26.relative(manifestDir, file);
@@ -4401,7 +4416,7 @@ function auditMarkdownContent(manifestDir) {
4401
4416
  if (RISKY_INSTALL_PATTERNS.some((re) => re.test(line2))) {
4402
4417
  failures.push(`${rel}:${i + 1}: risky install pattern`);
4403
4418
  }
4404
- if (ANY_NPX_PATTERN.test(line2) && !ALLOWED_NPX_PATTERN.test(line2)) {
4419
+ if (checkNonTsxNpx && ANY_NPX_PATTERN.test(line2) && !ALLOWED_NPX_PATTERN.test(line2)) {
4405
4420
  failures.push(`${rel}:${i + 1}: disallowed npx (only npx tsx allowed)`);
4406
4421
  }
4407
4422
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.6.5",
2
+ "version": "2.7.0",
3
3
  "items": [
4
4
  {
5
5
  "id": "haus.nextjs-patterns",
@@ -1911,6 +1911,323 @@
1911
1911
  "originUrl": "https://github.com/pcvelz/superpowers/blob/48f5123e18a1a92dfba962da8dc2509391c821ee/commands/onboard.md",
1912
1912
  "pinnedRef": "48f5123e18a1a92dfba962da8dc2509391c821ee",
1913
1913
  "ecosystem": "superpowers"
1914
+ },
1915
+ {
1916
+ "id": "haus.ecc-react-reviewer",
1917
+ "version": "1.0.0",
1918
+ "source": "curated",
1919
+ "type": "agent",
1920
+ "path": "agents/ecc/react-reviewer.md",
1921
+ "title": "React Reviewer",
1922
+ "purpose": "Expert React/JSX code reviewer specializing in hook correctness, render performance, server/client component boundaries, accessibility, and React-specific security. Use for any change touching .tsx/.jsx files or React component logic. MUST BE USED for React projects.",
1923
+ "whenToUse": "Expert React/JSX code reviewer specializing in hook correctness, render performance, server/client component boundaries, accessibility, and React-specific security. Use for any change touching .tsx/.jsx files or React component logic. MUST BE USED for React projects.",
1924
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
1925
+ "tags": ["agent", "review", "react"],
1926
+ "repoRoles": [],
1927
+ "tokenEstimate": 2856,
1928
+ "installMode": "copy-selected",
1929
+ "reviewStatus": "approved",
1930
+ "riskLevel": "low",
1931
+ "useMode": "copy",
1932
+ "license": "MIT",
1933
+ "licenseConfidence": "high",
1934
+ "originSourceId": "ecc-affaanm",
1935
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/react-reviewer.md",
1936
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
1937
+ "ecosystem": "react",
1938
+ "requiresAny": [
1939
+ {
1940
+ "stack": "react"
1941
+ },
1942
+ {
1943
+ "dependency": "react"
1944
+ }
1945
+ ]
1946
+ },
1947
+ {
1948
+ "id": "haus.ecc-react-build-resolver",
1949
+ "version": "1.0.0",
1950
+ "source": "curated",
1951
+ "type": "agent",
1952
+ "path": "agents/ecc/react-build-resolver.md",
1953
+ "title": "React Build Resolver",
1954
+ "purpose": "Diagnose and fix React build failures across Vite, webpack, Next.js, CRA, Parcel, esbuild, and Bun. Handles JSX/TSX compile errors, hydration mismatches, server/client component boundary failures, missing types, and bundler-specific configuration issues with minimal, surgical changes. MUST BE USED when a React build fails.",
1955
+ "whenToUse": "Diagnose and fix React build failures across Vite, webpack, Next.js, CRA, Parcel, esbuild, and Bun. Handles JSX/TSX compile errors, hydration mismatches, server/client component boundary failures, missing types, and bundler-specific configuration issues with minimal, surgical changes. MUST BE USED when a React build fails.",
1956
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
1957
+ "tags": ["agent", "react"],
1958
+ "repoRoles": [],
1959
+ "tokenEstimate": 2801,
1960
+ "installMode": "copy-selected",
1961
+ "reviewStatus": "approved",
1962
+ "riskLevel": "low",
1963
+ "useMode": "copy",
1964
+ "license": "MIT",
1965
+ "licenseConfidence": "high",
1966
+ "originSourceId": "ecc-affaanm",
1967
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/react-build-resolver.md",
1968
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
1969
+ "ecosystem": "react",
1970
+ "requiresAny": [
1971
+ {
1972
+ "stack": "react"
1973
+ },
1974
+ {
1975
+ "dependency": "react"
1976
+ }
1977
+ ]
1978
+ },
1979
+ {
1980
+ "id": "haus.ecc-php-reviewer",
1981
+ "version": "1.0.0",
1982
+ "source": "curated",
1983
+ "type": "agent",
1984
+ "path": "agents/ecc/php-reviewer.md",
1985
+ "title": "PHP Reviewer",
1986
+ "purpose": "Expert PHP code reviewer specializing in PSR-12 compliance, PHP type system, Eloquent ORM patterns, security, and performance. Use for all PHP code changes. MUST BE USED for PHP projects.",
1987
+ "whenToUse": "Expert PHP code reviewer specializing in PSR-12 compliance, PHP type system, Eloquent ORM patterns, security, and performance. Use for all PHP code changes. MUST BE USED for PHP projects.",
1988
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
1989
+ "tags": ["agent", "review", "php"],
1990
+ "repoRoles": [],
1991
+ "tokenEstimate": 1431,
1992
+ "installMode": "copy-selected",
1993
+ "reviewStatus": "approved",
1994
+ "riskLevel": "low",
1995
+ "useMode": "copy",
1996
+ "license": "MIT",
1997
+ "licenseConfidence": "high",
1998
+ "originSourceId": "ecc-affaanm",
1999
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/php-reviewer.md",
2000
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
2001
+ "ecosystem": "php",
2002
+ "requiresAny": [
2003
+ {
2004
+ "stack": "php"
2005
+ }
2006
+ ]
2007
+ },
2008
+ {
2009
+ "id": "haus.ecc-csharp-reviewer",
2010
+ "version": "1.0.0",
2011
+ "source": "curated",
2012
+ "type": "agent",
2013
+ "path": "agents/ecc/csharp-reviewer.md",
2014
+ "title": "C# Reviewer",
2015
+ "purpose": "Expert C# code reviewer specializing in .NET conventions, async patterns, security, nullable reference types, and performance. Use for all C# code changes. MUST BE USED for C# projects.",
2016
+ "whenToUse": "Expert C# code reviewer specializing in .NET conventions, async patterns, security, nullable reference types, and performance. Use for all C# code changes. MUST BE USED for C# projects.",
2017
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2018
+ "tags": ["agent", "review", "csharp", "dotnet"],
2019
+ "repoRoles": [],
2020
+ "tokenEstimate": 1426,
2021
+ "installMode": "copy-selected",
2022
+ "reviewStatus": "approved",
2023
+ "riskLevel": "low",
2024
+ "useMode": "copy",
2025
+ "license": "MIT",
2026
+ "licenseConfidence": "high",
2027
+ "originSourceId": "ecc-affaanm",
2028
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/csharp-reviewer.md",
2029
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
2030
+ "ecosystem": "dotnet",
2031
+ "requiresAny": [
2032
+ {
2033
+ "stack": "dotnet"
2034
+ }
2035
+ ]
2036
+ },
2037
+ {
2038
+ "id": "haus.ecc-database-reviewer",
2039
+ "version": "1.0.0",
2040
+ "source": "curated",
2041
+ "type": "agent",
2042
+ "path": "agents/ecc/database-reviewer.md",
2043
+ "title": "Database Reviewer",
2044
+ "purpose": "PostgreSQL database specialist for query optimization, schema design, security, and performance. Use PROACTIVELY when writing SQL, creating migrations, designing schemas, or troubleshooting database performance. Incorporates Supabase best practices.",
2045
+ "whenToUse": "PostgreSQL database specialist for query optimization, schema design, security, and performance. Use PROACTIVELY when writing SQL, creating migrations, designing schemas, or troubleshooting database performance. Incorporates Supabase best practices.",
2046
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2047
+ "tags": ["agent", "review", "database"],
2048
+ "repoRoles": [],
2049
+ "tokenEstimate": 1336,
2050
+ "installMode": "copy-selected",
2051
+ "reviewStatus": "approved",
2052
+ "riskLevel": "low",
2053
+ "useMode": "copy",
2054
+ "license": "MIT",
2055
+ "licenseConfidence": "high",
2056
+ "originSourceId": "ecc-affaanm",
2057
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/database-reviewer.md",
2058
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
2059
+ "ecosystem": "database",
2060
+ "requiresAny": [
2061
+ {
2062
+ "stack": "postgresql"
2063
+ },
2064
+ {
2065
+ "stack": "mysql"
2066
+ },
2067
+ {
2068
+ "stack": "mariadb"
2069
+ },
2070
+ {
2071
+ "stack": "mssql"
2072
+ }
2073
+ ]
2074
+ },
2075
+ {
2076
+ "id": "haus.ecc-e2e-runner",
2077
+ "version": "1.0.0",
2078
+ "source": "curated",
2079
+ "type": "agent",
2080
+ "path": "agents/ecc/e2e-runner.md",
2081
+ "title": "E2E Runner",
2082
+ "purpose": "End-to-end testing specialist using Vercel Agent Browser (preferred) with Playwright fallback. Use PROACTIVELY for generating, maintaining, and running E2E tests. Manages test journeys, quarantines flaky tests, uploads artifacts (screenshots, videos, traces), and ensures critical user flows work.",
2083
+ "whenToUse": "End-to-end testing specialist using Vercel Agent Browser (preferred) with Playwright fallback. Use PROACTIVELY for generating, maintaining, and running E2E tests. Manages test journeys, quarantines flaky tests, uploads artifacts (screenshots, videos, traces), and ensures critical user flows work.",
2084
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2085
+ "tags": ["agent", "testing"],
2086
+ "repoRoles": [],
2087
+ "tokenEstimate": 1274,
2088
+ "installMode": "copy-selected",
2089
+ "reviewStatus": "approved",
2090
+ "riskLevel": "low",
2091
+ "useMode": "copy",
2092
+ "license": "MIT",
2093
+ "licenseConfidence": "high",
2094
+ "originSourceId": "ecc-affaanm",
2095
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/e2e-runner.md",
2096
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
2097
+ "ecosystem": "testing",
2098
+ "requiresAny": [
2099
+ {
2100
+ "stack": "playwright"
2101
+ },
2102
+ {
2103
+ "dependency": "@playwright/test"
2104
+ }
2105
+ ]
2106
+ },
2107
+ {
2108
+ "id": "haus.ecc-performance-optimizer",
2109
+ "version": "1.0.0",
2110
+ "source": "curated",
2111
+ "type": "agent",
2112
+ "path": "agents/ecc/performance-optimizer.md",
2113
+ "title": "Performance Optimizer",
2114
+ "purpose": "Performance analysis and optimization specialist. Use PROACTIVELY for identifying bottlenecks, optimizing slow code, reducing bundle sizes, and improving runtime performance. Profiling, memory leaks, render optimization, and algorithmic improvements.",
2115
+ "whenToUse": "Performance analysis and optimization specialist. Use PROACTIVELY for identifying bottlenecks, optimizing slow code, reducing bundle sizes, and improving runtime performance. Profiling, memory leaks, render optimization, and algorithmic improvements.",
2116
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2117
+ "tags": ["agent", "quality"],
2118
+ "repoRoles": [],
2119
+ "tokenEstimate": 3367,
2120
+ "installMode": "copy-selected",
2121
+ "reviewStatus": "approved",
2122
+ "riskLevel": "low",
2123
+ "useMode": "copy",
2124
+ "license": "MIT",
2125
+ "licenseConfidence": "high",
2126
+ "originSourceId": "ecc-affaanm",
2127
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/agents/performance-optimizer.md",
2128
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
2129
+ "ecosystem": "ecc",
2130
+ "default": true
2131
+ },
2132
+ {
2133
+ "id": "haus.ecc-refactor-cleaner",
2134
+ "version": "1.0.0",
2135
+ "source": "curated",
2136
+ "type": "agent",
2137
+ "path": "agents/ecc/refactor-cleaner.md",
2138
+ "title": "Refactor Cleaner",
2139
+ "purpose": "Dead code cleanup and consolidation specialist. Use PROACTIVELY for removing unused code, duplicates, and refactoring. Runs analysis tools (knip, depcheck, ts-prune) to identify dead code and safely removes it.",
2140
+ "whenToUse": "Dead code cleanup and consolidation specialist. Use PROACTIVELY for removing unused code, duplicates, and refactoring. Runs analysis tools (knip, depcheck, ts-prune) to identify dead code and safely removes it.",
2141
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2142
+ "tags": ["agent", "quality"],
2143
+ "repoRoles": [],
2144
+ "tokenEstimate": 670,
2145
+ "installMode": "copy-selected",
2146
+ "reviewStatus": "approved",
2147
+ "riskLevel": "low",
2148
+ "useMode": "copy",
2149
+ "license": "MIT",
2150
+ "licenseConfidence": "high",
2151
+ "originSourceId": "ecc-affaanm",
2152
+ "originUrl": "https://github.com/affaan-m/ECC/blob/5b173d2e6c11b976a0f13b2f59125e08956c1d47/.kiro/agents/refactor-cleaner.md",
2153
+ "pinnedRef": "5b173d2e6c11b976a0f13b2f59125e08956c1d47",
2154
+ "ecosystem": "ecc",
2155
+ "default": true
2156
+ },
2157
+ {
2158
+ "id": "haus.oh-my-claudecode-test-engineer",
2159
+ "version": "1.0.0",
2160
+ "source": "curated",
2161
+ "type": "agent",
2162
+ "path": "agents/oh-my-claudecode/test-engineer.md",
2163
+ "title": "Test Engineer",
2164
+ "purpose": "Test strategy, integration/e2e coverage, flaky test hardening, TDD workflows",
2165
+ "whenToUse": "Test strategy, integration/e2e coverage, flaky test hardening, TDD workflows",
2166
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2167
+ "tags": ["agent", "testing"],
2168
+ "repoRoles": [],
2169
+ "tokenEstimate": 1656,
2170
+ "installMode": "copy-selected",
2171
+ "reviewStatus": "approved",
2172
+ "riskLevel": "low",
2173
+ "useMode": "copy",
2174
+ "license": "MIT",
2175
+ "licenseConfidence": "high",
2176
+ "originSourceId": "omcc-yeachanheo",
2177
+ "originUrl": "https://github.com/yeachan-heo/oh-my-claudecode/blob/50f6ff05eb5d9ebed66f05d8c4580c0b119f37af/agents/test-engineer.md",
2178
+ "pinnedRef": "50f6ff05eb5d9ebed66f05d8c4580c0b119f37af",
2179
+ "ecosystem": "oh-my-claudecode",
2180
+ "default": true
2181
+ },
2182
+ {
2183
+ "id": "haus.oh-my-claudecode-designer",
2184
+ "version": "1.0.0",
2185
+ "source": "curated",
2186
+ "type": "agent",
2187
+ "path": "agents/oh-my-claudecode/designer.md",
2188
+ "title": "Designer",
2189
+ "purpose": "UI/UX Designer-Developer for stunning interfaces (Sonnet)",
2190
+ "whenToUse": "UI/UX Designer-Developer for stunning interfaces (Sonnet)",
2191
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2192
+ "tags": ["agent", "frontend"],
2193
+ "repoRoles": [],
2194
+ "tokenEstimate": 2407,
2195
+ "installMode": "copy-selected",
2196
+ "reviewStatus": "approved",
2197
+ "riskLevel": "low",
2198
+ "useMode": "copy",
2199
+ "license": "MIT",
2200
+ "licenseConfidence": "high",
2201
+ "originSourceId": "omcc-yeachanheo",
2202
+ "originUrl": "https://github.com/yeachan-heo/oh-my-claudecode/blob/50f6ff05eb5d9ebed66f05d8c4580c0b119f37af/agents/designer.md",
2203
+ "pinnedRef": "50f6ff05eb5d9ebed66f05d8c4580c0b119f37af",
2204
+ "ecosystem": "oh-my-claudecode",
2205
+ "default": true
2206
+ },
2207
+ {
2208
+ "id": "haus.oh-my-claudecode-tracer",
2209
+ "version": "1.0.0",
2210
+ "source": "curated",
2211
+ "type": "agent",
2212
+ "path": "agents/oh-my-claudecode/tracer.md",
2213
+ "title": "Tracer",
2214
+ "purpose": "Evidence-driven causal tracing with competing hypotheses, evidence for/against, uncertainty tracking, and next-probe recommendations",
2215
+ "whenToUse": "Evidence-driven causal tracing with competing hypotheses, evidence for/against, uncertainty tracking, and next-probe recommendations",
2216
+ "whenNotToUse": "Do not use when a more specific skill or command applies.",
2217
+ "tags": ["agent", "quality"],
2218
+ "repoRoles": [],
2219
+ "tokenEstimate": 3004,
2220
+ "installMode": "copy-selected",
2221
+ "reviewStatus": "approved",
2222
+ "riskLevel": "low",
2223
+ "useMode": "copy",
2224
+ "license": "MIT",
2225
+ "licenseConfidence": "high",
2226
+ "originSourceId": "omcc-yeachanheo",
2227
+ "originUrl": "https://github.com/yeachan-heo/oh-my-claudecode/blob/50f6ff05eb5d9ebed66f05d8c4580c0b119f37af/agents/tracer.md",
2228
+ "pinnedRef": "50f6ff05eb5d9ebed66f05d8c4580c0b119f37af",
2229
+ "ecosystem": "oh-my-claudecode",
2230
+ "default": true
1914
2231
  }
1915
2232
  ]
1916
2233
  }
@@ -25,6 +25,7 @@
25
25
  ],
26
26
  "allowedNpxPattern": { "source": "\\bnpx\\s+tsx\\b", "flags": "i" },
27
27
  "anyNpxPattern": { "source": "\\bnpx\\s+\\S+", "flags": "i" },
28
+ "npxTsxOnlyExemptTypes": ["agent"],
28
29
  "httpUrlPattern": { "source": "^http:\\/\\/", "flags": "i" },
29
30
  "placeholderPattern": { "source": "\\bTODO\\b|\\bPLACEHOLDER\\b", "flags": "i" },
30
31
  "allowedStacks": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-tech/haus-workflow",
3
- "version": "0.25.1",
3
+ "version": "0.26.0",
4
4
  "description": "Haus AI workflow CLI for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {