{"id":47998338,"url":"https://github.com/utkarsh5026/featish","last_synced_at":"2026-04-04T12:08:05.825Z","repository":{"id":345666694,"uuid":"1186856891","full_name":"utkarsh5026/featish","owner":"utkarsh5026","description":"Spin up feature modules in seconds — consistent structure, zero boilerplate.","archived":false,"fork":false,"pushed_at":"2026-03-20T05:07:40.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-20T21:00:18.551Z","etag":null,"topics":["bun","bunx","command-line","feature-engineering","nodejs","npx","scaffold","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/utkarsh5026.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"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}},"created_at":"2026-03-20T04:04:26.000Z","updated_at":"2026-03-20T05:06:46.000Z","dependencies_parsed_at":"2026-03-20T21:02:27.902Z","dependency_job_id":null,"html_url":"https://github.com/utkarsh5026/featish","commit_stats":null,"previous_names":["utkarsh5026/featish"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/utkarsh5026/featish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utkarsh5026%2Ffeatish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utkarsh5026%2Ffeatish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utkarsh5026%2Ffeatish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utkarsh5026%2Ffeatish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utkarsh5026","download_url":"https://codeload.github.com/utkarsh5026/featish/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utkarsh5026%2Ffeatish/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31398819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bun","bunx","command-line","feature-engineering","nodejs","npx","scaffold","typescript"],"created_at":"2026-04-04T12:08:05.252Z","updated_at":"2026-04-04T12:08:05.816Z","avatar_url":"https://github.com/utkarsh5026.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Featish\n\nCLI tool to scaffold feature modules with a consistent structure.\n\nFeatish creates standardized feature directories with barrel exports, README files, and a customizable folder layout — so every feature in your project follows the same pattern.\n\n## Installation\n\n```bash\nnpm install -g featish\n```\n\nOr use it directly with npx:\n\n```bash\nnpx featish user-profile\n```\n\n## Quick Start\n\n```bash\n# Scaffold a new feature\nfeatish user-profile\n\n# Preview without creating files\nfeatish user-profile --dry-run\n\n# Custom folder structure\nfeatish user-profile --folders components,hooks,utils\n\n# Custom target directory\nfeatish user-profile --dir src/modules\n```\n\nThis creates:\n\n```\nsrc/features/user-profile/\n├── components/\n│   └── index.ts\n├── hooks/\n│   └── index.ts\n├── services/\n│   └── index.ts\n├── stores/\n│   └── index.ts\n├── types/\n│   └── index.ts\n├── utils/\n│   └── index.ts\n├── constants/\n│   └── index.ts\n├── index.ts\n└── README.md\n```\n\n## CLI Reference\n\n```\nUsage: featish [options] \u003cname\u003e\n\nArguments:\n  name               Feature name in kebab-case (e.g., user-profile)\n\nOptions:\n  -V, --version      Output the version number\n  -d, --dir \u003cpath\u003e   Target directory relative to cwd (default: \"src/features\")\n  --no-barrels       Skip generating barrel index.ts files\n  --no-readme        Skip generating README.md\n  --dry-run          Preview what would be created without writing files\n  --folders \u003citems\u003e  Comma-separated list of folders to create\n  --verbose          Show config resolution details\n  -h, --help         Display help for command\n```\n\n### Shell Completions\n\nGenerate shell completions for your shell:\n\n```bash\n# Bash\nfeatish completion \u003e\u003e ~/.bashrc\n\n# Zsh\nfeatish completion \u003e\u003e ~/.zshrc\n\n# Fish\nfeatish completion --fish \u003e ~/.config/fish/completions/featish.fish\n```\n\n### Init\n\nGenerate a starter config file in your project root:\n\n```bash\nfeatish init\n```\n\nThis creates a `.featishrc.json` with the default configuration, ready to customize.\n\n## Configuration\n\nFeatish looks for configuration in the following files (in order):\n\n1. `featish.config.json`\n2. `.featishrc.json`\n3. `.featishrc`\n\nCLI flags override config file values, which override defaults.\n\n### Options\n\n| Option    | Type       | Default                                                                  | Description                          |\n| --------- | ---------- | ------------------------------------------------------------------------ | ------------------------------------ |\n| `dir`     | `string`   | `\"src/features\"`                                                         | Target directory relative to cwd     |\n| `folders` | `string[]` | `[\"components\", \"hooks\", \"services\", \"stores\", \"types\", \"utils\", \"constants\"]` | Folders to create inside each feature |\n| `barrels` | `boolean`  | `true`                                                                   | Generate barrel `index.ts` files     |\n| `readme`  | `boolean`  | `true`                                                                   | Generate a `README.md` per feature   |\n\n### Example Configs\n\n**React project** (`.featishrc.json`):\n\n```json\n{\n  \"dir\": \"src/features\",\n  \"folders\": [\"components\", \"hooks\", \"services\", \"stores\", \"types\", \"utils\", \"constants\"],\n  \"barrels\": true,\n  \"readme\": true\n}\n```\n\n**Vue project**:\n\n```json\n{\n  \"dir\": \"src/features\",\n  \"folders\": [\"components\", \"composables\", \"services\", \"stores\", \"types\", \"utils\"],\n  \"barrels\": true,\n  \"readme\": true\n}\n```\n\n**Plain TypeScript**:\n\n```json\n{\n  \"dir\": \"src/modules\",\n  \"folders\": [\"services\", \"types\", \"utils\", \"constants\"],\n  \"barrels\": true,\n  \"readme\": false\n}\n```\n\n## Programmatic API\n\nFeatish exports its core functions for use in other tools:\n\n```ts\nimport { scaffoldFeature, generateFiles } from 'featish/api';\nimport { DEFAULT_CONFIG } from 'featish/api';\nimport type { FeatishConfig, FeatureFile } from 'featish/api';\n\n// Generate file list without writing to disk\nconst files: FeatureFile[] = generateFiles('user-profile', DEFAULT_CONFIG);\n\n// Scaffold a feature\nconst created = await scaffoldFeature('user-profile', DEFAULT_CONFIG, process.cwd(), false);\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futkarsh5026%2Ffeatish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futkarsh5026%2Ffeatish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futkarsh5026%2Ffeatish/lists"}