@batijs/features 0.0.657 → 0.0.658
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.
|
@@ -1,3 +1,79 @@
|
|
|
1
|
+
//#region src/groups.d.ts
|
|
2
|
+
declare enum categoriesGroups {
|
|
3
|
+
Frontend = "Frontend",
|
|
4
|
+
Data = "Data",
|
|
5
|
+
Deployment = "Deployment",
|
|
6
|
+
Utilities = "Utilities"
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/categories.d.ts
|
|
10
|
+
declare const categories: readonly [{
|
|
11
|
+
readonly label: "Frontend Framework";
|
|
12
|
+
readonly group: categoriesGroups.Frontend;
|
|
13
|
+
readonly description: "Flexible, robust, community-driven, and fast Vite-based frontend framework.";
|
|
14
|
+
readonly required: true;
|
|
15
|
+
}, {
|
|
16
|
+
readonly label: "UI Framework";
|
|
17
|
+
readonly group: categoriesGroups.Frontend;
|
|
18
|
+
readonly description: "It’s recommended to choose a frontend lib to kickstart a new Vike project,\nas they each come with a wide range of integrations. You can at any time eject and take control over integration code\nso that it doesn’t get in your way.";
|
|
19
|
+
readonly required: true;
|
|
20
|
+
}, {
|
|
21
|
+
readonly label: "CSS";
|
|
22
|
+
readonly group: categoriesGroups.Frontend;
|
|
23
|
+
readonly description: "These CSS libraries are deeply integrated with UI frameworks.\nThey showcase their respective recommended usage and how they integrate with Vite and Vike.";
|
|
24
|
+
}, {
|
|
25
|
+
readonly label: "UI Component Libraries";
|
|
26
|
+
readonly group: categoriesGroups.Frontend;
|
|
27
|
+
readonly description: "These UI Component Libraries are deeply integrated with UI frameworks.\nThey showcase their respective recommended usage and how they integrate with Vite and Vike.";
|
|
28
|
+
}, {
|
|
29
|
+
readonly label: "Auth";
|
|
30
|
+
readonly group: categoriesGroups.Data;
|
|
31
|
+
readonly description: "Ready to use self-hosted or cloud-based Auth solutions.\nRequires to also select a Server of your choosing.";
|
|
32
|
+
}, {
|
|
33
|
+
readonly label: "Data fetching";
|
|
34
|
+
readonly group: categoriesGroups.Data;
|
|
35
|
+
readonly description: "Data fetching libraries to help you interact with your backend.\nSelecting one of those usually requires you to also choose a Server.";
|
|
36
|
+
}, {
|
|
37
|
+
readonly label: "Server";
|
|
38
|
+
readonly group: categoriesGroups.Data;
|
|
39
|
+
readonly description: "Mostly required by other integrations such as Auth or RPC,\nit's recommended to only install a Server if you really need to, as Vike doesn't require one to operate.";
|
|
40
|
+
}, {
|
|
41
|
+
readonly label: "Database";
|
|
42
|
+
readonly group: categoriesGroups.Data;
|
|
43
|
+
readonly description: "The database your app talks to. SQLite runs embedded (and powers Cloudflare D1);\nPostgreSQL targets a Postgres server. Selected on its own you get a thin client; pair it with an ORM or query builder below.";
|
|
44
|
+
}, {
|
|
45
|
+
readonly label: "ORM / Query builder";
|
|
46
|
+
readonly group: categoriesGroups.Data;
|
|
47
|
+
readonly description: "Type-safe data access on top of your database. Requires choosing a Database above.";
|
|
48
|
+
}, {
|
|
49
|
+
readonly label: "Hosting";
|
|
50
|
+
readonly group: categoriesGroups.Deployment;
|
|
51
|
+
readonly description: "Quickly host your Vike project with a Serverless or VPS (coming soon) solution.";
|
|
52
|
+
readonly required: true;
|
|
53
|
+
}, {
|
|
54
|
+
readonly label: "AI Agent";
|
|
55
|
+
readonly group: categoriesGroups.Utilities;
|
|
56
|
+
readonly description: "Generate agent skills (SKILL.md) tailored to your selected stack,\nso AI coding agents understand this project's conventions out of the box.";
|
|
57
|
+
}, {
|
|
58
|
+
readonly label: "Linter";
|
|
59
|
+
readonly multiple: true;
|
|
60
|
+
readonly group: categoriesGroups.Utilities;
|
|
61
|
+
readonly description: "Well known linting and formatting tools, pre-configured to match their recommended usage,\ntailored for Vike.";
|
|
62
|
+
}, {
|
|
63
|
+
readonly label: "Analytics";
|
|
64
|
+
readonly group: categoriesGroups.Utilities;
|
|
65
|
+
readonly description: "Keep track of your website traffic with these ready-to-get-started Analytics solutions.";
|
|
66
|
+
}, {
|
|
67
|
+
readonly label: "Error tracking";
|
|
68
|
+
readonly group: categoriesGroups.Utilities;
|
|
69
|
+
readonly description: "Coming soon: Error Tracking solution for frontend and backend";
|
|
70
|
+
}, {
|
|
71
|
+
readonly label: "Tooling";
|
|
72
|
+
readonly group: categoriesGroups.Utilities;
|
|
73
|
+
readonly description: "Additional tooling to improve your developer experience.";
|
|
74
|
+
}];
|
|
75
|
+
type CategoryLabels = (typeof categories)[number]["label"];
|
|
76
|
+
//#endregion
|
|
1
77
|
//#region src/features.d.ts
|
|
2
78
|
/**
|
|
3
79
|
* In forder to have an icon that has different colors based on dark/light mode:
|
|
@@ -574,139 +650,14 @@ declare const features: readonly [{
|
|
|
574
650
|
}];
|
|
575
651
|
}, {
|
|
576
652
|
readonly category: "AI Agent";
|
|
577
|
-
readonly label: "
|
|
578
|
-
readonly flag: "
|
|
579
|
-
readonly
|
|
580
|
-
readonly
|
|
581
|
-
readonly
|
|
582
|
-
readonly links: [{
|
|
583
|
-
readonly label: "Skills docs";
|
|
584
|
-
readonly href: "https://code.claude.com/docs/en/skills";
|
|
585
|
-
}];
|
|
586
|
-
}, {
|
|
587
|
-
readonly category: "AI Agent";
|
|
588
|
-
readonly label: "Codex";
|
|
589
|
-
readonly flag: "codex";
|
|
590
|
-
readonly image: "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSIxZW0iIHN0eWxlPSJmbGV4Om5vbmU7bGluZS1oZWlnaHQ6MSIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMWVtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzdHlsZT5wYXRoe2ZpbGw6IzAwMH1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7cGF0aHtmaWxsOiNmZmZ9fTwvc3R5bGU+PHRpdGxlPkNvZGV4PC90aXRsZT48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA4Ni40NTdhNi4xMDUgNi4xMDUgMCAwMTMuMDQ2LS40MTVjMS4zMzMuMTUzIDIuNTIxLjcyIDMuNTY0IDEuN2EuMTE3LjExNyAwIDAwLjEwNy4wMjljMS40MDgtLjM0NiAyLjc2Mi0uMjI0IDQuMDYxLjM2NmwuMDYzLjAzLjE1NC4wNzZjMS4zNTcuNzAzIDIuMzMgMS43NyAyLjkxOCAzLjE5OC4yNzguNjc5LjQxOCAxLjM4OC40MjEgMi4xMjZhNS42NTUgNS42NTUgMCAwMS0uMTggMS42MzEuMTY3LjE2NyAwIDAwLjA0LjE1NSA1Ljk4MiA1Ljk4MiAwIDAxMS41NzggMi44OTFjLjM4NSAxLjkwMS0uMDEgMy42MTUtMS4xODMgNS4xNGwtLjE4Mi4yMmE2LjA2MyA2LjA2MyAwIDAxLTIuOTM0IDEuODUxLjE2Mi4xNjIgMCAwMC0uMTA4LjEwMmMtLjI1NS43MzYtLjUxMSAxLjM2NC0uOTg3IDEuOTkyLTEuMTk5IDEuNTgyLTIuOTYyIDIuNDYyLTQuOTQ4IDIuNDUxLTEuNTgzLS4wMDgtMi45ODYtLjU4Ny00LjIxLTEuNzM2YS4xNDUuMTQ1IDAgMDAtLjE0LS4wMzJjLS41MTguMTY3LTEuMDQuMTkxLTEuNjA0LjE4NWE1LjkyNCA1LjkyNCAwIDAxLTIuNTk1LS42MjIgNi4wNTggNi4wNTggMCAwMS0yLjE0Ni0xLjc4MWMtLjIwMy0uMjY5LS40MDQtLjUyMi0uNTUxLS44MjFhNy43NCA3Ljc0IDAgMDEtLjQ5NS0xLjI4MyA2LjExIDYuMTEgMCAwMS0uMDE3LTMuMDY0LjE2Ni4xNjYgMCAwMC4wMDgtLjA3NC4xMTUuMTE1IDAgMDAtLjAzNy0uMDY0IDUuOTU4IDUuOTU4IDAgMDEtMS4zOC0yLjIwMiA1LjE5NiA1LjE5NiAwIDAxLS4zMzMtMS41ODkgNi45MTUgNi45MTUgMCAwMS4xODgtMi4xMzJjLjQ1LTEuNDg0IDEuMzA5LTIuNjQ4IDIuNTc3LTMuNDkzLjI4Mi0uMTg4LjU1LS4zMzQuODAyLS40MzguMjg2LS4xMi41NzMtLjIyLjg2MS0uMzA0YS4xMjkuMTI5IDAgMDAuMDg3LS4wODdBNi4wMTYgNi4wMTYgMCAwMTUuNjM1IDIuMzFDNi4zMTUgMS40NjQgNy4xMzIuODQ2IDguMDg2LjQ1N3ptLS44MDQgNy44NWEuODQ4Ljg0OCAwIDAwLTEuNDczLjg0MmwxLjY5NCAyLjk2NS0xLjY4OCAyLjg0OGEuODQ5Ljg0OSAwIDAwMS40Ni44NjRsMS45NC0zLjI3MmEuODQ5Ljg0OSAwIDAwLjAwNy0uODU0bC0xLjk0LTMuMzkzem01LjQ0NiA2LjI0YS44NDkuODQ5IDAgMDAwIDEuNjk1aDQuODQ4YS44NDkuODQ5IDAgMDAwLTEuNjk2aC00Ljg0OHoiPjwvcGF0aD48L3N2Zz4=";
|
|
591
|
-
readonly url: "https://developers.openai.com/codex";
|
|
592
|
-
readonly tagline: "OpenAI's coding agent";
|
|
593
|
-
readonly links: [{
|
|
594
|
-
readonly label: "Skills docs";
|
|
595
|
-
readonly href: "https://developers.openai.com/codex/skills";
|
|
596
|
-
}];
|
|
597
|
-
}, {
|
|
598
|
-
readonly category: "AI Agent";
|
|
599
|
-
readonly label: "Gemini";
|
|
600
|
-
readonly flag: "gemini";
|
|
601
|
-
readonly image: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgc3R5bGU9ImZsZXg6bm9uZTtsaW5lLWhlaWdodDoxIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxZW0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRpdGxlPkdlbWluaTwvdGl0bGU+PHBhdGggZD0iTTIwLjYxNiAxMC44MzVhMTQuMTQ3IDE0LjE0NyAwIDAxLTQuNDUtMy4wMDEgMTQuMTExIDE0LjExMSAwIDAxLTMuNjc4LTYuNDUyLjUwMy41MDMgMCAwMC0uOTc1IDAgMTQuMTM0IDE0LjEzNCAwIDAxLTMuNjc5IDYuNDUyIDE0LjE1NSAxNC4xNTUgMCAwMS00LjQ1IDMuMDAxYy0uNjUuMjgtMS4zMTguNTA1LTIuMDAyLjY3OGEuNTAyLjUwMiAwIDAwMCAuOTc1Yy42ODQuMTcyIDEuMzUuMzk3IDIuMDAyLjY3N2ExNC4xNDcgMTQuMTQ3IDAgMDE0LjQ1IDMuMDAxIDE0LjExMiAxNC4xMTIgMCAwMTMuNjc5IDYuNDUzLjUwMi41MDIgMCAwMC45NzUgMGMuMTcyLS42ODUuMzk3LTEuMzUxLjY3Ny0yLjAwM2ExNC4xNDUgMTQuMTQ1IDAgMDEzLjAwMS00LjQ1IDE0LjExMyAxNC4xMTMgMCAwMTYuNDUzLTMuNjc4LjUwMy41MDMgMCAwMDAtLjk3NSAxMy4yNDUgMTMuMjQ1IDAgMDEtMi4wMDMtLjY3OHoiIGZpbGw9IiMzMTg2RkYiPjwvcGF0aD48cGF0aCBkPSJNMjAuNjE2IDEwLjgzNWExNC4xNDcgMTQuMTQ3IDAgMDEtNC40NS0zLjAwMSAxNC4xMTEgMTQuMTExIDAgMDEtMy42NzgtNi40NTIuNTAzLjUwMyAwIDAwLS45NzUgMCAxNC4xMzQgMTQuMTM0IDAgMDEtMy42NzkgNi40NTIgMTQuMTU1IDE0LjE1NSAwIDAxLTQuNDUgMy4wMDFjLS42NS4yOC0xLjMxOC41MDUtMi4wMDIuNjc4YS41MDIuNTAyIDAgMDAwIC45NzVjLjY4NC4xNzIgMS4zNS4zOTcgMi4wMDIuNjc3YTE0LjE0NyAxNC4xNDcgMCAwMTQuNDUgMy4wMDEgMTQuMTEyIDE0LjExMiAwIDAxMy42NzkgNi40NTMuNTAyLjUwMiAwIDAwLjk3NSAwYy4xNzItLjY4NS4zOTctMS4zNTEuNjc3LTIuMDAzYTE0LjE0NSAxNC4xNDUgMCAwMTMuMDAxLTQuNDUgMTQuMTEzIDE0LjExMyAwIDAxNi40NTMtMy42NzguNTAzLjUwMyAwIDAwMC0uOTc1IDEzLjI0NSAxMy4yNDUgMCAwMS0yLjAwMy0uNjc4eiIgZmlsbD0idXJsKCNsb2JlLWljb25zLWdlbWluaS0wLV9SXzBfKSI+PC9wYXRoPjxwYXRoIGQ9Ik0yMC42MTYgMTAuODM1YTE0LjE0NyAxNC4xNDcgMCAwMS00LjQ1LTMuMDAxIDE0LjExMSAxNC4xMTEgMCAwMS0zLjY3OC02LjQ1Mi41MDMuNTAzIDAgMDAtLjk3NSAwIDE0LjEzNCAxNC4xMzQgMCAwMS0zLjY3OSA2LjQ1MiAxNC4xNTUgMTQuMTU1IDAgMDEtNC40NSAzLjAwMWMtLjY1LjI4LTEuMzE4LjUwNS0yLjAwMi42NzhhLjUwMi41MDIgMCAwMDAgLjk3NWMuNjg0LjE3MiAxLjM1LjM5NyAyLjAwMi42NzdhMTQuMTQ3IDE0LjE0NyAwIDAxNC40NSAzLjAwMSAxNC4xMTIgMTQuMTEyIDAgMDEzLjY3OSA2LjQ1My41MDIuNTAyIDAgMDAuOTc1IDBjLjE3Mi0uNjg1LjM5Ny0xLjM1MS42NzctMi4wMDNhMTQuMTQ1IDE0LjE0NSAwIDAxMy4wMDEtNC40NSAxNC4xMTMgMTQuMTEzIDAgMDE2LjQ1My0zLjY3OC41MDMuNTAzIDAgMDAwLS45NzUgMTMuMjQ1IDEzLjI0NSAwIDAxLTIuMDAzLS42Nzh6IiBmaWxsPSJ1cmwoI2xvYmUtaWNvbnMtZ2VtaW5pLTEtX1JfMF8pIj48L3BhdGg+PHBhdGggZD0iTTIwLjYxNiAxMC44MzVhMTQuMTQ3IDE0LjE0NyAwIDAxLTQuNDUtMy4wMDEgMTQuMTExIDE0LjExMSAwIDAxLTMuNjc4LTYuNDUyLjUwMy41MDMgMCAwMC0uOTc1IDAgMTQuMTM0IDE0LjEzNCAwIDAxLTMuNjc5IDYuNDUyIDE0LjE1NSAxNC4xNTUgMCAwMS00LjQ1IDMuMDAxYy0uNjUuMjgtMS4zMTguNTA1LTIuMDAyLjY3OGEuNTAyLjUwMiAwIDAwMCAuOTc1Yy42ODQuMTcyIDEuMzUuMzk3IDIuMDAyLjY3N2ExNC4xNDcgMTQuMTQ3IDAgMDE0LjQ1IDMuMDAxIDE0LjExMiAxNC4xMTIgMCAwMTMuNjc5IDYuNDUzLjUwMi41MDIgMCAwMC45NzUgMGMuMTcyLS42ODUuMzk3LTEuMzUxLjY3Ny0yLjAwM2ExNC4xNDUgMTQuMTQ1IDAgMDEzLjAwMS00LjQ1IDE0LjExMyAxNC4xMTMgMCAwMTYuNDUzLTMuNjc4LjUwMy41MDMgMCAwMDAtLjk3NSAxMy4yNDUgMTMuMjQ1IDAgMDEtMi4wMDMtLjY3OHoiIGZpbGw9InVybCgjbG9iZS1pY29ucy1nZW1pbmktMi1fUl8wXykiPjwvcGF0aD48ZGVmcz48bGluZWFyR3JhZGllbnQgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJsb2JlLWljb25zLWdlbWluaS0wLV9SXzBfIiB4MT0iNyIgeDI9IjExIiB5MT0iMTUuNSIgeTI9IjEyIj48c3RvcCBzdG9wLWNvbG9yPSIjMDhCOTYyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDhCOTYyIiBzdG9wLW9wYWNpdHk9IjAiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImxvYmUtaWNvbnMtZ2VtaW5pLTEtX1JfMF8iIHgxPSI4IiB4Mj0iMTEuNSIgeTE9IjUuNSIgeTI9IjExIj48c3RvcCBzdG9wLWNvbG9yPSIjRjk0NTQzIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRjk0NTQzIiBzdG9wLW9wYWNpdHk9IjAiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImxvYmUtaWNvbnMtZ2VtaW5pLTItX1JfMF8iIHgxPSIzLjUiIHgyPSIxNy41IiB5MT0iMTMuNSIgeTI9IjEyIj48c3RvcCBzdG9wLWNvbG9yPSIjRkFCQzEyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuNDYiIHN0b3AtY29sb3I9IiNGQUJDMTIiIHN0b3Atb3BhY2l0eT0iMCI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==";
|
|
602
|
-
readonly url: "https://github.com/google-gemini/gemini-cli";
|
|
603
|
-
readonly tagline: "Google's open-source AI agent for the terminal";
|
|
604
|
-
readonly links: [{
|
|
605
|
-
readonly label: "Repo";
|
|
606
|
-
readonly href: "https://github.com/google-gemini/gemini-cli";
|
|
607
|
-
}];
|
|
608
|
-
}, {
|
|
609
|
-
readonly category: "AI Agent";
|
|
610
|
-
readonly label: "Cursor";
|
|
611
|
-
readonly flag: "cursor";
|
|
612
|
-
readonly image: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+cGF0aHtmaWxsOiMwMDB9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe3BhdGh7ZmlsbDojZmZmfX08L3N0eWxlPjx0aXRsZT5DdXJzb3I8L3RpdGxlPjxwYXRoIGQ9Ik0xMS41MDMuMTMxIDEuODkxIDUuNjc4YS44NC44NCAwIDAgMC0uNDIuNzI2djExLjE4OGMwIC4zLjE2Mi41NzUuNDIuNzI0bDkuNjA5IDUuNTVhMSAxIDAgMCAwIC45OTggMGw5LjYxLTUuNTVhLjg0Ljg0IDAgMCAwIC40Mi0uNzI0VjYuNDA0YS44NC44NCAwIDAgMC0uNDItLjcyNkwxMi40OTcuMTMxYTEuMDEgMS4wMSAwIDAgMC0uOTk2IDBNMi42NTcgNi4zMzhoMTguNTVjLjI2MyAwIC40My4yODcuMjk3LjUxNUwxMi4yMyAyMi45MThjLS4wNjIuMTA3LS4yMjkuMDY0LS4yMjktLjA2VjEyLjMzNWEuNTkuNTkgMCAwIDAtLjI5NS0uNTFsLTkuMTEtNS4yNTdjLS4xMDktLjA2My0uMDY0LS4yMy4wNjEtLjIzIi8+PC9zdmc+";
|
|
613
|
-
readonly url: "https://cursor.com";
|
|
614
|
-
readonly tagline: "The AI code editor";
|
|
615
|
-
readonly links: [{
|
|
616
|
-
readonly label: "Skills docs";
|
|
617
|
-
readonly href: "https://cursor.com/docs/skills";
|
|
618
|
-
}];
|
|
619
|
-
}, {
|
|
620
|
-
readonly category: "AI Agent";
|
|
621
|
-
readonly label: "Copilot";
|
|
622
|
-
readonly flag: "copilot";
|
|
623
|
-
readonly image: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+cGF0aHtmaWxsOiMwMDB9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe3BhdGh7ZmlsbDojZmZmfX08L3N0eWxlPjx0aXRsZT5HaXRIdWIgQ29waWxvdDwvdGl0bGU+PHBhdGggZD0iTTIzLjkyMiAxNi45OTdDMjMuMDYxIDE4LjQ5MiAxOC4wNjMgMjIuMDIgMTIgMjIuMDIgNS45MzcgMjIuMDIuOTM5IDE4LjQ5Mi4wNzggMTYuOTk3QS42NDEuNjQxIDAgMCAxIDAgMTYuNzQxdi0yLjg2OWEuODgzLjg4MyAwIDAgMSAuMDUzLS4yMmMuMzcyLS45MzUgMS4zNDctMi4yOTIgMi42MDUtMi42NTYuMTY3LS40MjkuNDE0LTEuMDU1LjY0NC0xLjUxN2ExMC4wOTggMTAuMDk4IDAgMCAxLS4wNTItMS4wODZjMC0xLjMzMS4yODItMi40OTkgMS4xMzItMy4zNjguMzk3LS40MDYuODktLjcxNyAxLjQ3NC0uOTUyQzcuMjU1IDIuOTM3IDkuMjQ4IDEuOTggMTEuOTc4IDEuOThjMi43MzEgMCA0Ljc2Ny45NTcgNi4xNjYgMi4wOTMuNTg0LjIzNSAxLjA3Ny41NDYgMS40NzQuOTUyLjg1Ljg2OSAxLjEzMiAyLjAzNyAxLjEzMiAzLjM2OCAwIC4zNjgtLjAxNC43MzMtLjA1MiAxLjA4Ni4yMy40NjIuNDc3IDEuMDg4LjY0NCAxLjUxNyAxLjI1OC4zNjQgMi4yMzMgMS43MjEgMi42MDUgMi42NTZhLjg0MS44NDEgMCAwIDEgLjA1My4yMnYyLjg2OWEuNjQxLjY0MSAwIDAgMS0uMDc4LjI1NlptLTExLjc1LTUuOTkyaC0uMzQ0YTQuMzU5IDQuMzU5IDAgMCAxLS4zNTUuNTA4Yy0uNzcuOTQ3LTEuOTE4IDEuNDkyLTMuNTA4IDEuNDkyLTEuNzI1IDAtMi45ODktLjM1OS0zLjc4Mi0xLjI1OWEyLjEzNyAyLjEzNyAwIDAgMS0uMDg1LS4xMDRMNCAxMS43NDZ2Ni41ODVjMS40MzUuNzc5IDQuNTE0IDIuMTc5IDggMi4xNzkgMy40ODYgMCA2LjU2NS0xLjQgOC0yLjE3OXYtNi41ODVsLS4wOTgtLjEwNHMtLjAzMy4wNDUtLjA4NS4xMDRjLS43OTMuOS0yLjA1NyAxLjI1OS0zLjc4MiAxLjI1OS0xLjU5IDAtMi43MzgtLjU0NS0zLjUwOC0xLjQ5MmE0LjM1OSA0LjM1OSAwIDAgMS0uMzU1LS41MDhabTIuMzI4IDMuMjVjLjU0OSAwIDEgLjQ1MSAxIDF2MmMwIC41NDktLjQ1MSAxLTEgMS0uNTQ5IDAtMS0uNDUxLTEtMXYtMmMwLS41NDkuNDUxLTEgMS0xWm0tNSAwYy41NDkgMCAxIC40NTEgMSAxdjJjMCAuNTQ5LS40NTEgMS0xIDEtLjU0OSAwLTEtLjQ1MS0xLTF2LTJjMC0uNTQ5LjQ1MS0xIDEtMVptMy4zMTMtNi4xODVjLjEzNiAxLjA1Ny40MDMgMS45MTMuODc4IDIuNDk3LjQ0Mi41NDQgMS4xMzQuOTM4IDIuMzQ0LjkzOCAxLjU3MyAwIDIuMjkyLS4zMzcgMi42NTctLjc1MS4zODQtLjQzNS41NTgtMS4xNS41NTgtMi4zNjEgMC0xLjE0LS4yNDMtMS44NDctLjcwNS0yLjMxOS0uNDc3LS40ODgtMS4zMTktLjg2Mi0yLjgyNC0xLjAyNS0xLjQ4Ny0uMTYxLTIuMTkyLjEzOC0yLjUzMy41MjktLjI2OS4zMDctLjQzNy44MDgtLjQzOCAxLjU3OHYuMDIxYzAgLjI2NS4wMjEuNTYyLjA2My44OTNabS0xLjYyNiAwYy4wNDItLjMzMS4wNjMtLjYyOC4wNjMtLjg5NHYtLjAyYy0uMDAxLS43Ny0uMTY5LTEuMjcxLS40MzgtMS41NzgtLjM0MS0uMzkxLTEuMDQ2LS42OS0yLjUzMy0uNTI5LTEuNTA1LjE2My0yLjM0Ny41MzctMi44MjQgMS4wMjUtLjQ2Mi40NzItLjcwNSAxLjE3OS0uNzA1IDIuMzE5IDAgMS4yMTEuMTc1IDEuOTI2LjU1OCAyLjM2MS4zNjUuNDE0IDEuMDg0Ljc1MSAyLjY1Ny43NTEgMS4yMSAwIDEuOTAyLS4zOTQgMi4zNDQtLjkzOC40NzUtLjU4NC43NDItMS40NC44NzgtMi40OTdaIi8+PC9zdmc+";
|
|
624
|
-
readonly url: "https://github.com/features/copilot";
|
|
625
|
-
readonly tagline: "AI pair programmer";
|
|
626
|
-
readonly links: [{
|
|
627
|
-
readonly label: "Agent skills";
|
|
628
|
-
readonly href: "https://docs.github.com/en/copilot/concepts/agents/about-agent-skills";
|
|
629
|
-
}];
|
|
653
|
+
readonly label: "Agent Skills";
|
|
654
|
+
readonly flag: "skills";
|
|
655
|
+
readonly readonly: true;
|
|
656
|
+
readonly invisibleCli: true;
|
|
657
|
+
readonly invisibleWeb: true;
|
|
630
658
|
}];
|
|
631
|
-
declare const flags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "better-auth" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "express" | "fastify" | "elysia" | "sqlite" | "postgres" | "drizzle" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "hosting-diy" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "docker" | "dokploy" | "eslint" | "oxlint" | "biome" | "prettier" | "sentry" | "logrocket" | "storybook" | "
|
|
632
|
-
declare const cliFlags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "better-auth" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "express" | "fastify" | "elysia" | "sqlite" | "postgres" | "drizzle" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "hosting-diy" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "docker" | "dokploy" | "eslint" | "oxlint" | "biome" | "prettier" | "sentry" | "logrocket" | "storybook" | "
|
|
659
|
+
declare const flags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "better-auth" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "express" | "fastify" | "elysia" | "sqlite" | "postgres" | "drizzle" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "hosting-diy" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "docker" | "dokploy" | "eslint" | "oxlint" | "biome" | "prettier" | "sentry" | "logrocket" | "storybook" | "skills")[];
|
|
660
|
+
declare const cliFlags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "better-auth" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "express" | "fastify" | "elysia" | "sqlite" | "postgres" | "drizzle" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "hosting-diy" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "docker" | "dokploy" | "eslint" | "oxlint" | "biome" | "prettier" | "sentry" | "logrocket" | "storybook" | "skills")[];
|
|
633
661
|
type Flags = (typeof flags)[number];
|
|
634
662
|
//#endregion
|
|
635
|
-
|
|
636
|
-
declare enum categoriesGroups {
|
|
637
|
-
Frontend = "Frontend",
|
|
638
|
-
Data = "Data",
|
|
639
|
-
Deployment = "Deployment",
|
|
640
|
-
Utilities = "Utilities"
|
|
641
|
-
}
|
|
642
|
-
//#endregion
|
|
643
|
-
//#region src/categories.d.ts
|
|
644
|
-
declare const categories: readonly [{
|
|
645
|
-
readonly label: "Frontend Framework";
|
|
646
|
-
readonly group: categoriesGroups.Frontend;
|
|
647
|
-
readonly description: "Flexible, robust, community-driven, and fast Vite-based frontend framework.";
|
|
648
|
-
readonly required: true;
|
|
649
|
-
}, {
|
|
650
|
-
readonly label: "UI Framework";
|
|
651
|
-
readonly group: categoriesGroups.Frontend;
|
|
652
|
-
readonly description: "It’s recommended to choose a frontend lib to kickstart a new Vike project,\nas they each come with a wide range of integrations. You can at any time eject and take control over integration code\nso that it doesn’t get in your way.";
|
|
653
|
-
readonly required: true;
|
|
654
|
-
}, {
|
|
655
|
-
readonly label: "CSS";
|
|
656
|
-
readonly group: categoriesGroups.Frontend;
|
|
657
|
-
readonly description: "These CSS libraries are deeply integrated with UI frameworks.\nThey showcase their respective recommended usage and how they integrate with Vite and Vike.";
|
|
658
|
-
}, {
|
|
659
|
-
readonly label: "UI Component Libraries";
|
|
660
|
-
readonly group: categoriesGroups.Frontend;
|
|
661
|
-
readonly description: "These UI Component Libraries are deeply integrated with UI frameworks.\nThey showcase their respective recommended usage and how they integrate with Vite and Vike.";
|
|
662
|
-
}, {
|
|
663
|
-
readonly label: "Auth";
|
|
664
|
-
readonly group: categoriesGroups.Data;
|
|
665
|
-
readonly description: "Ready to use self-hosted or cloud-based Auth solutions.\nRequires to also select a Server of your choosing.";
|
|
666
|
-
}, {
|
|
667
|
-
readonly label: "Data fetching";
|
|
668
|
-
readonly group: categoriesGroups.Data;
|
|
669
|
-
readonly description: "Data fetching libraries to help you interact with your backend.\nSelecting one of those usually requires you to also choose a Server.";
|
|
670
|
-
}, {
|
|
671
|
-
readonly label: "Server";
|
|
672
|
-
readonly group: categoriesGroups.Data;
|
|
673
|
-
readonly description: "Mostly required by other integrations such as Auth or RPC,\nit's recommended to only install a Server if you really need to, as Vike doesn't require one to operate.";
|
|
674
|
-
}, {
|
|
675
|
-
readonly label: "Database";
|
|
676
|
-
readonly group: categoriesGroups.Data;
|
|
677
|
-
readonly description: "The database your app talks to. SQLite runs embedded (and powers Cloudflare D1);\nPostgreSQL targets a Postgres server. Selected on its own you get a thin client; pair it with an ORM or query builder below.";
|
|
678
|
-
}, {
|
|
679
|
-
readonly label: "ORM / Query builder";
|
|
680
|
-
readonly group: categoriesGroups.Data;
|
|
681
|
-
readonly description: "Type-safe data access on top of your database. Requires choosing a Database above.";
|
|
682
|
-
}, {
|
|
683
|
-
readonly label: "Hosting";
|
|
684
|
-
readonly group: categoriesGroups.Deployment;
|
|
685
|
-
readonly description: "Quickly host your Vike project with a Serverless or VPS (coming soon) solution.";
|
|
686
|
-
readonly required: true;
|
|
687
|
-
}, {
|
|
688
|
-
readonly label: "AI Agent";
|
|
689
|
-
readonly multiple: true;
|
|
690
|
-
readonly group: categoriesGroups.Utilities;
|
|
691
|
-
readonly description: "Generate agent skills and instruction files (SKILL.md, AGENTS.md, CLAUDE.md, …) tailored to your\nselected stack, so AI coding agents understand this project's conventions out of the box. Select every agent you use.";
|
|
692
|
-
}, {
|
|
693
|
-
readonly label: "Linter";
|
|
694
|
-
readonly multiple: true;
|
|
695
|
-
readonly group: categoriesGroups.Utilities;
|
|
696
|
-
readonly description: "Well known linting and formatting tools, pre-configured to match their recommended usage,\ntailored for Vike.";
|
|
697
|
-
}, {
|
|
698
|
-
readonly label: "Analytics";
|
|
699
|
-
readonly group: categoriesGroups.Utilities;
|
|
700
|
-
readonly description: "Keep track of your website traffic with these ready-to-get-started Analytics solutions.";
|
|
701
|
-
}, {
|
|
702
|
-
readonly label: "Error tracking";
|
|
703
|
-
readonly group: categoriesGroups.Utilities;
|
|
704
|
-
readonly description: "Coming soon: Error Tracking solution for frontend and backend";
|
|
705
|
-
}, {
|
|
706
|
-
readonly label: "Tooling";
|
|
707
|
-
readonly group: categoriesGroups.Utilities;
|
|
708
|
-
readonly description: "Additional tooling to improve your developer experience.";
|
|
709
|
-
}];
|
|
710
|
-
type CategoryLabels = (typeof categories)[number]["label"];
|
|
711
|
-
//#endregion
|
|
712
|
-
export { cliFlags as a, Flags as i, categories as n, features as o, categoriesGroups as r, flags as s, CategoryLabels as t };
|
|
663
|
+
export { CategoryLabels as a, flags as i, cliFlags as n, categories as o, features as r, categoriesGroups as s, Flags as t };
|
|
@@ -625,63 +625,11 @@ const features = [
|
|
|
625
625
|
},
|
|
626
626
|
{
|
|
627
627
|
category: "AI Agent",
|
|
628
|
-
label: "
|
|
629
|
-
flag: "
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
links: [{
|
|
634
|
-
label: "Skills docs",
|
|
635
|
-
href: "https://code.claude.com/docs/en/skills"
|
|
636
|
-
}]
|
|
637
|
-
},
|
|
638
|
-
{
|
|
639
|
-
category: "AI Agent",
|
|
640
|
-
label: "Codex",
|
|
641
|
-
flag: "codex",
|
|
642
|
-
image: "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSIxZW0iIHN0eWxlPSJmbGV4Om5vbmU7bGluZS1oZWlnaHQ6MSIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMWVtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzdHlsZT5wYXRoe2ZpbGw6IzAwMH1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7cGF0aHtmaWxsOiNmZmZ9fTwvc3R5bGU+PHRpdGxlPkNvZGV4PC90aXRsZT48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA4Ni40NTdhNi4xMDUgNi4xMDUgMCAwMTMuMDQ2LS40MTVjMS4zMzMuMTUzIDIuNTIxLjcyIDMuNTY0IDEuN2EuMTE3LjExNyAwIDAwLjEwNy4wMjljMS40MDgtLjM0NiAyLjc2Mi0uMjI0IDQuMDYxLjM2NmwuMDYzLjAzLjE1NC4wNzZjMS4zNTcuNzAzIDIuMzMgMS43NyAyLjkxOCAzLjE5OC4yNzguNjc5LjQxOCAxLjM4OC40MjEgMi4xMjZhNS42NTUgNS42NTUgMCAwMS0uMTggMS42MzEuMTY3LjE2NyAwIDAwLjA0LjE1NSA1Ljk4MiA1Ljk4MiAwIDAxMS41NzggMi44OTFjLjM4NSAxLjkwMS0uMDEgMy42MTUtMS4xODMgNS4xNGwtLjE4Mi4yMmE2LjA2MyA2LjA2MyAwIDAxLTIuOTM0IDEuODUxLjE2Mi4xNjIgMCAwMC0uMTA4LjEwMmMtLjI1NS43MzYtLjUxMSAxLjM2NC0uOTg3IDEuOTkyLTEuMTk5IDEuNTgyLTIuOTYyIDIuNDYyLTQuOTQ4IDIuNDUxLTEuNTgzLS4wMDgtMi45ODYtLjU4Ny00LjIxLTEuNzM2YS4xNDUuMTQ1IDAgMDAtLjE0LS4wMzJjLS41MTguMTY3LTEuMDQuMTkxLTEuNjA0LjE4NWE1LjkyNCA1LjkyNCAwIDAxLTIuNTk1LS42MjIgNi4wNTggNi4wNTggMCAwMS0yLjE0Ni0xLjc4MWMtLjIwMy0uMjY5LS40MDQtLjUyMi0uNTUxLS44MjFhNy43NCA3Ljc0IDAgMDEtLjQ5NS0xLjI4MyA2LjExIDYuMTEgMCAwMS0uMDE3LTMuMDY0LjE2Ni4xNjYgMCAwMC4wMDgtLjA3NC4xMTUuMTE1IDAgMDAtLjAzNy0uMDY0IDUuOTU4IDUuOTU4IDAgMDEtMS4zOC0yLjIwMiA1LjE5NiA1LjE5NiAwIDAxLS4zMzMtMS41ODkgNi45MTUgNi45MTUgMCAwMS4xODgtMi4xMzJjLjQ1LTEuNDg0IDEuMzA5LTIuNjQ4IDIuNTc3LTMuNDkzLjI4Mi0uMTg4LjU1LS4zMzQuODAyLS40MzguMjg2LS4xMi41NzMtLjIyLjg2MS0uMzA0YS4xMjkuMTI5IDAgMDAuMDg3LS4wODdBNi4wMTYgNi4wMTYgMCAwMTUuNjM1IDIuMzFDNi4zMTUgMS40NjQgNy4xMzIuODQ2IDguMDg2LjQ1N3ptLS44MDQgNy44NWEuODQ4Ljg0OCAwIDAwLTEuNDczLjg0MmwxLjY5NCAyLjk2NS0xLjY4OCAyLjg0OGEuODQ5Ljg0OSAwIDAwMS40Ni44NjRsMS45NC0zLjI3MmEuODQ5Ljg0OSAwIDAwLjAwNy0uODU0bC0xLjk0LTMuMzkzem01LjQ0NiA2LjI0YS44NDkuODQ5IDAgMDAwIDEuNjk1aDQuODQ4YS44NDkuODQ5IDAgMDAwLTEuNjk2aC00Ljg0OHoiPjwvcGF0aD48L3N2Zz4=",
|
|
643
|
-
url: "https://developers.openai.com/codex",
|
|
644
|
-
tagline: "OpenAI's coding agent",
|
|
645
|
-
links: [{
|
|
646
|
-
label: "Skills docs",
|
|
647
|
-
href: "https://developers.openai.com/codex/skills"
|
|
648
|
-
}]
|
|
649
|
-
},
|
|
650
|
-
{
|
|
651
|
-
category: "AI Agent",
|
|
652
|
-
label: "Gemini",
|
|
653
|
-
flag: "gemini",
|
|
654
|
-
image: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgc3R5bGU9ImZsZXg6bm9uZTtsaW5lLWhlaWdodDoxIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxZW0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRpdGxlPkdlbWluaTwvdGl0bGU+PHBhdGggZD0iTTIwLjYxNiAxMC44MzVhMTQuMTQ3IDE0LjE0NyAwIDAxLTQuNDUtMy4wMDEgMTQuMTExIDE0LjExMSAwIDAxLTMuNjc4LTYuNDUyLjUwMy41MDMgMCAwMC0uOTc1IDAgMTQuMTM0IDE0LjEzNCAwIDAxLTMuNjc5IDYuNDUyIDE0LjE1NSAxNC4xNTUgMCAwMS00LjQ1IDMuMDAxYy0uNjUuMjgtMS4zMTguNTA1LTIuMDAyLjY3OGEuNTAyLjUwMiAwIDAwMCAuOTc1Yy42ODQuMTcyIDEuMzUuMzk3IDIuMDAyLjY3N2ExNC4xNDcgMTQuMTQ3IDAgMDE0LjQ1IDMuMDAxIDE0LjExMiAxNC4xMTIgMCAwMTMuNjc5IDYuNDUzLjUwMi41MDIgMCAwMC45NzUgMGMuMTcyLS42ODUuMzk3LTEuMzUxLjY3Ny0yLjAwM2ExNC4xNDUgMTQuMTQ1IDAgMDEzLjAwMS00LjQ1IDE0LjExMyAxNC4xMTMgMCAwMTYuNDUzLTMuNjc4LjUwMy41MDMgMCAwMDAtLjk3NSAxMy4yNDUgMTMuMjQ1IDAgMDEtMi4wMDMtLjY3OHoiIGZpbGw9IiMzMTg2RkYiPjwvcGF0aD48cGF0aCBkPSJNMjAuNjE2IDEwLjgzNWExNC4xNDcgMTQuMTQ3IDAgMDEtNC40NS0zLjAwMSAxNC4xMTEgMTQuMTExIDAgMDEtMy42NzgtNi40NTIuNTAzLjUwMyAwIDAwLS45NzUgMCAxNC4xMzQgMTQuMTM0IDAgMDEtMy42NzkgNi40NTIgMTQuMTU1IDE0LjE1NSAwIDAxLTQuNDUgMy4wMDFjLS42NS4yOC0xLjMxOC41MDUtMi4wMDIuNjc4YS41MDIuNTAyIDAgMDAwIC45NzVjLjY4NC4xNzIgMS4zNS4zOTcgMi4wMDIuNjc3YTE0LjE0NyAxNC4xNDcgMCAwMTQuNDUgMy4wMDEgMTQuMTEyIDE0LjExMiAwIDAxMy42NzkgNi40NTMuNTAyLjUwMiAwIDAwLjk3NSAwYy4xNzItLjY4NS4zOTctMS4zNTEuNjc3LTIuMDAzYTE0LjE0NSAxNC4xNDUgMCAwMTMuMDAxLTQuNDUgMTQuMTEzIDE0LjExMyAwIDAxNi40NTMtMy42NzguNTAzLjUwMyAwIDAwMC0uOTc1IDEzLjI0NSAxMy4yNDUgMCAwMS0yLjAwMy0uNjc4eiIgZmlsbD0idXJsKCNsb2JlLWljb25zLWdlbWluaS0wLV9SXzBfKSI+PC9wYXRoPjxwYXRoIGQ9Ik0yMC42MTYgMTAuODM1YTE0LjE0NyAxNC4xNDcgMCAwMS00LjQ1LTMuMDAxIDE0LjExMSAxNC4xMTEgMCAwMS0zLjY3OC02LjQ1Mi41MDMuNTAzIDAgMDAtLjk3NSAwIDE0LjEzNCAxNC4xMzQgMCAwMS0zLjY3OSA2LjQ1MiAxNC4xNTUgMTQuMTU1IDAgMDEtNC40NSAzLjAwMWMtLjY1LjI4LTEuMzE4LjUwNS0yLjAwMi42NzhhLjUwMi41MDIgMCAwMDAgLjk3NWMuNjg0LjE3MiAxLjM1LjM5NyAyLjAwMi42NzdhMTQuMTQ3IDE0LjE0NyAwIDAxNC40NSAzLjAwMSAxNC4xMTIgMTQuMTEyIDAgMDEzLjY3OSA2LjQ1My41MDIuNTAyIDAgMDAuOTc1IDBjLjE3Mi0uNjg1LjM5Ny0xLjM1MS42NzctMi4wMDNhMTQuMTQ1IDE0LjE0NSAwIDAxMy4wMDEtNC40NSAxNC4xMTMgMTQuMTEzIDAgMDE2LjQ1My0zLjY3OC41MDMuNTAzIDAgMDAwLS45NzUgMTMuMjQ1IDEzLjI0NSAwIDAxLTIuMDAzLS42Nzh6IiBmaWxsPSJ1cmwoI2xvYmUtaWNvbnMtZ2VtaW5pLTEtX1JfMF8pIj48L3BhdGg+PHBhdGggZD0iTTIwLjYxNiAxMC44MzVhMTQuMTQ3IDE0LjE0NyAwIDAxLTQuNDUtMy4wMDEgMTQuMTExIDE0LjExMSAwIDAxLTMuNjc4LTYuNDUyLjUwMy41MDMgMCAwMC0uOTc1IDAgMTQuMTM0IDE0LjEzNCAwIDAxLTMuNjc5IDYuNDUyIDE0LjE1NSAxNC4xNTUgMCAwMS00LjQ1IDMuMDAxYy0uNjUuMjgtMS4zMTguNTA1LTIuMDAyLjY3OGEuNTAyLjUwMiAwIDAwMCAuOTc1Yy42ODQuMTcyIDEuMzUuMzk3IDIuMDAyLjY3N2ExNC4xNDcgMTQuMTQ3IDAgMDE0LjQ1IDMuMDAxIDE0LjExMiAxNC4xMTIgMCAwMTMuNjc5IDYuNDUzLjUwMi41MDIgMCAwMC45NzUgMGMuMTcyLS42ODUuMzk3LTEuMzUxLjY3Ny0yLjAwM2ExNC4xNDUgMTQuMTQ1IDAgMDEzLjAwMS00LjQ1IDE0LjExMyAxNC4xMTMgMCAwMTYuNDUzLTMuNjc4LjUwMy41MDMgMCAwMDAtLjk3NSAxMy4yNDUgMTMuMjQ1IDAgMDEtMi4wMDMtLjY3OHoiIGZpbGw9InVybCgjbG9iZS1pY29ucy1nZW1pbmktMi1fUl8wXykiPjwvcGF0aD48ZGVmcz48bGluZWFyR3JhZGllbnQgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJsb2JlLWljb25zLWdlbWluaS0wLV9SXzBfIiB4MT0iNyIgeDI9IjExIiB5MT0iMTUuNSIgeTI9IjEyIj48c3RvcCBzdG9wLWNvbG9yPSIjMDhCOTYyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDhCOTYyIiBzdG9wLW9wYWNpdHk9IjAiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImxvYmUtaWNvbnMtZ2VtaW5pLTEtX1JfMF8iIHgxPSI4IiB4Mj0iMTEuNSIgeTE9IjUuNSIgeTI9IjExIj48c3RvcCBzdG9wLWNvbG9yPSIjRjk0NTQzIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRjk0NTQzIiBzdG9wLW9wYWNpdHk9IjAiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImxvYmUtaWNvbnMtZ2VtaW5pLTItX1JfMF8iIHgxPSIzLjUiIHgyPSIxNy41IiB5MT0iMTMuNSIgeTI9IjEyIj48c3RvcCBzdG9wLWNvbG9yPSIjRkFCQzEyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuNDYiIHN0b3AtY29sb3I9IiNGQUJDMTIiIHN0b3Atb3BhY2l0eT0iMCI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==",
|
|
655
|
-
url: "https://github.com/google-gemini/gemini-cli",
|
|
656
|
-
tagline: "Google's open-source AI agent for the terminal",
|
|
657
|
-
links: [{
|
|
658
|
-
label: "Repo",
|
|
659
|
-
href: "https://github.com/google-gemini/gemini-cli"
|
|
660
|
-
}]
|
|
661
|
-
},
|
|
662
|
-
{
|
|
663
|
-
category: "AI Agent",
|
|
664
|
-
label: "Cursor",
|
|
665
|
-
flag: "cursor",
|
|
666
|
-
image: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+cGF0aHtmaWxsOiMwMDB9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe3BhdGh7ZmlsbDojZmZmfX08L3N0eWxlPjx0aXRsZT5DdXJzb3I8L3RpdGxlPjxwYXRoIGQ9Ik0xMS41MDMuMTMxIDEuODkxIDUuNjc4YS44NC44NCAwIDAgMC0uNDIuNzI2djExLjE4OGMwIC4zLjE2Mi41NzUuNDIuNzI0bDkuNjA5IDUuNTVhMSAxIDAgMCAwIC45OTggMGw5LjYxLTUuNTVhLjg0Ljg0IDAgMCAwIC40Mi0uNzI0VjYuNDA0YS44NC44NCAwIDAgMC0uNDItLjcyNkwxMi40OTcuMTMxYTEuMDEgMS4wMSAwIDAgMC0uOTk2IDBNMi42NTcgNi4zMzhoMTguNTVjLjI2MyAwIC40My4yODcuMjk3LjUxNUwxMi4yMyAyMi45MThjLS4wNjIuMTA3LS4yMjkuMDY0LS4yMjktLjA2VjEyLjMzNWEuNTkuNTkgMCAwIDAtLjI5NS0uNTFsLTkuMTEtNS4yNTdjLS4xMDktLjA2My0uMDY0LS4yMy4wNjEtLjIzIi8+PC9zdmc+",
|
|
667
|
-
url: "https://cursor.com",
|
|
668
|
-
tagline: "The AI code editor",
|
|
669
|
-
links: [{
|
|
670
|
-
label: "Skills docs",
|
|
671
|
-
href: "https://cursor.com/docs/skills"
|
|
672
|
-
}]
|
|
673
|
-
},
|
|
674
|
-
{
|
|
675
|
-
category: "AI Agent",
|
|
676
|
-
label: "Copilot",
|
|
677
|
-
flag: "copilot",
|
|
678
|
-
image: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+cGF0aHtmaWxsOiMwMDB9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe3BhdGh7ZmlsbDojZmZmfX08L3N0eWxlPjx0aXRsZT5HaXRIdWIgQ29waWxvdDwvdGl0bGU+PHBhdGggZD0iTTIzLjkyMiAxNi45OTdDMjMuMDYxIDE4LjQ5MiAxOC4wNjMgMjIuMDIgMTIgMjIuMDIgNS45MzcgMjIuMDIuOTM5IDE4LjQ5Mi4wNzggMTYuOTk3QS42NDEuNjQxIDAgMCAxIDAgMTYuNzQxdi0yLjg2OWEuODgzLjg4MyAwIDAgMSAuMDUzLS4yMmMuMzcyLS45MzUgMS4zNDctMi4yOTIgMi42MDUtMi42NTYuMTY3LS40MjkuNDE0LTEuMDU1LjY0NC0xLjUxN2ExMC4wOTggMTAuMDk4IDAgMCAxLS4wNTItMS4wODZjMC0xLjMzMS4yODItMi40OTkgMS4xMzItMy4zNjguMzk3LS40MDYuODktLjcxNyAxLjQ3NC0uOTUyQzcuMjU1IDIuOTM3IDkuMjQ4IDEuOTggMTEuOTc4IDEuOThjMi43MzEgMCA0Ljc2Ny45NTcgNi4xNjYgMi4wOTMuNTg0LjIzNSAxLjA3Ny41NDYgMS40NzQuOTUyLjg1Ljg2OSAxLjEzMiAyLjAzNyAxLjEzMiAzLjM2OCAwIC4zNjgtLjAxNC43MzMtLjA1MiAxLjA4Ni4yMy40NjIuNDc3IDEuMDg4LjY0NCAxLjUxNyAxLjI1OC4zNjQgMi4yMzMgMS43MjEgMi42MDUgMi42NTZhLjg0MS44NDEgMCAwIDEgLjA1My4yMnYyLjg2OWEuNjQxLjY0MSAwIDAgMS0uMDc4LjI1NlptLTExLjc1LTUuOTkyaC0uMzQ0YTQuMzU5IDQuMzU5IDAgMCAxLS4zNTUuNTA4Yy0uNzcuOTQ3LTEuOTE4IDEuNDkyLTMuNTA4IDEuNDkyLTEuNzI1IDAtMi45ODktLjM1OS0zLjc4Mi0xLjI1OWEyLjEzNyAyLjEzNyAwIDAgMS0uMDg1LS4xMDRMNCAxMS43NDZ2Ni41ODVjMS40MzUuNzc5IDQuNTE0IDIuMTc5IDggMi4xNzkgMy40ODYgMCA2LjU2NS0xLjQgOC0yLjE3OXYtNi41ODVsLS4wOTgtLjEwNHMtLjAzMy4wNDUtLjA4NS4xMDRjLS43OTMuOS0yLjA1NyAxLjI1OS0zLjc4MiAxLjI1OS0xLjU5IDAtMi43MzgtLjU0NS0zLjUwOC0xLjQ5MmE0LjM1OSA0LjM1OSAwIDAgMS0uMzU1LS41MDhabTIuMzI4IDMuMjVjLjU0OSAwIDEgLjQ1MSAxIDF2MmMwIC41NDktLjQ1MSAxLTEgMS0uNTQ5IDAtMS0uNDUxLTEtMXYtMmMwLS41NDkuNDUxLTEgMS0xWm0tNSAwYy41NDkgMCAxIC40NTEgMSAxdjJjMCAuNTQ5LS40NTEgMS0xIDEtLjU0OSAwLTEtLjQ1MS0xLTF2LTJjMC0uNTQ5LjQ1MS0xIDEtMVptMy4zMTMtNi4xODVjLjEzNiAxLjA1Ny40MDMgMS45MTMuODc4IDIuNDk3LjQ0Mi41NDQgMS4xMzQuOTM4IDIuMzQ0LjkzOCAxLjU3MyAwIDIuMjkyLS4zMzcgMi42NTctLjc1MS4zODQtLjQzNS41NTgtMS4xNS41NTgtMi4zNjEgMC0xLjE0LS4yNDMtMS44NDctLjcwNS0yLjMxOS0uNDc3LS40ODgtMS4zMTktLjg2Mi0yLjgyNC0xLjAyNS0xLjQ4Ny0uMTYxLTIuMTkyLjEzOC0yLjUzMy41MjktLjI2OS4zMDctLjQzNy44MDgtLjQzOCAxLjU3OHYuMDIxYzAgLjI2NS4wMjEuNTYyLjA2My44OTNabS0xLjYyNiAwYy4wNDItLjMzMS4wNjMtLjYyOC4wNjMtLjg5NHYtLjAyYy0uMDAxLS43Ny0uMTY5LTEuMjcxLS40MzgtMS41NzgtLjM0MS0uMzkxLTEuMDQ2LS42OS0yLjUzMy0uNTI5LTEuNTA1LjE2My0yLjM0Ny41MzctMi44MjQgMS4wMjUtLjQ2Mi40NzItLjcwNSAxLjE3OS0uNzA1IDIuMzE5IDAgMS4yMTEuMTc1IDEuOTI2LjU1OCAyLjM2MS4zNjUuNDE0IDEuMDg0Ljc1MSAyLjY1Ny43NTEgMS4yMSAwIDEuOTAyLS4zOTQgMi4zNDQtLjkzOC40NzUtLjU4NC43NDItMS40NC44NzgtMi40OTdaIi8+PC9zdmc+",
|
|
679
|
-
url: "https://github.com/features/copilot",
|
|
680
|
-
tagline: "AI pair programmer",
|
|
681
|
-
links: [{
|
|
682
|
-
label: "Agent skills",
|
|
683
|
-
href: "https://docs.github.com/en/copilot/concepts/agents/about-agent-skills"
|
|
684
|
-
}]
|
|
628
|
+
label: "Agent Skills",
|
|
629
|
+
flag: "skills",
|
|
630
|
+
readonly: true,
|
|
631
|
+
invisibleCli: true,
|
|
632
|
+
invisibleWeb: true
|
|
685
633
|
}
|
|
686
634
|
];
|
|
687
635
|
const flags = features.map((f) => f.flag);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,68 +1,5 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as CategoryLabels, i as flags, n as cliFlags, o as categories, r as features, s as categoriesGroups, t as Flags } from "./features-BLhpWLj5.js";
|
|
2
2
|
|
|
3
|
-
//#region src/ai-agents.d.ts
|
|
4
|
-
/** The flags in the "AI Agent" category, kept in sync with `features.ts`. */
|
|
5
|
-
type AiAgentFlag = Extract<(typeof features)[number], {
|
|
6
|
-
category: "AI Agent";
|
|
7
|
-
}>["flag"];
|
|
8
|
-
declare const aiAgentFlags: ("claude" | "codex" | "gemini" | "cursor" | "copilot")[];
|
|
9
|
-
interface AiAgentMeta {
|
|
10
|
-
/** Project dir this agent reads skills from. */
|
|
11
|
-
skillsDir: string;
|
|
12
|
-
/** Project instruction file this agent reads. */
|
|
13
|
-
instructionFile: string;
|
|
14
|
-
/** One-line `@AGENTS.md` import for agents that can't read AGENTS.md natively; `null` otherwise. */
|
|
15
|
-
instructionImport: string | null;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Per-agent skill + instruction-file targets, verified against each agent's docs (SKILLS_PLAN.md §15):
|
|
19
|
-
* `.agents/skills` is the cross-tool standard (Codex/Gemini/Cursor/Copilot), only Claude needs
|
|
20
|
-
* `.claude/skills`; AGENTS.md is native everywhere except Claude and Gemini, which take an `@`-import.
|
|
21
|
-
*/
|
|
22
|
-
declare const aiAgents: {
|
|
23
|
-
readonly claude: {
|
|
24
|
-
readonly skillsDir: ".claude/skills";
|
|
25
|
-
readonly instructionFile: "CLAUDE.md";
|
|
26
|
-
readonly instructionImport: "@AGENTS.md";
|
|
27
|
-
};
|
|
28
|
-
readonly codex: {
|
|
29
|
-
readonly skillsDir: ".agents/skills";
|
|
30
|
-
readonly instructionFile: "AGENTS.md";
|
|
31
|
-
readonly instructionImport: null;
|
|
32
|
-
};
|
|
33
|
-
readonly gemini: {
|
|
34
|
-
readonly skillsDir: ".agents/skills";
|
|
35
|
-
readonly instructionFile: "GEMINI.md";
|
|
36
|
-
readonly instructionImport: "@./AGENTS.md";
|
|
37
|
-
};
|
|
38
|
-
readonly cursor: {
|
|
39
|
-
readonly skillsDir: ".agents/skills";
|
|
40
|
-
readonly instructionFile: "AGENTS.md";
|
|
41
|
-
readonly instructionImport: null;
|
|
42
|
-
};
|
|
43
|
-
readonly copilot: {
|
|
44
|
-
readonly skillsDir: ".agents/skills";
|
|
45
|
-
readonly instructionFile: "AGENTS.md";
|
|
46
|
-
readonly instructionImport: null;
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Minimal set of skill directories covering the selected agents (SKILLS_PLAN.md §4) — at most two:
|
|
51
|
-
* `.agents/skills` for Codex/Gemini/Cursor/Copilot, `.claude/skills` for Claude.
|
|
52
|
-
*/
|
|
53
|
-
declare function resolveSkillDirs(selected: Iterable<Flags>): string[];
|
|
54
|
-
interface InstructionFileTarget {
|
|
55
|
-
/** Path relative to the app root. */
|
|
56
|
-
path: string;
|
|
57
|
-
/** Import directive for a shim; `null` means write the canonical content here. */
|
|
58
|
-
import: string | null;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Instruction files for the selected agents (SKILLS_PLAN.md §3): the canonical `AGENTS.md` (always,
|
|
62
|
-
* since the shims import it) plus each agent's file, deduped. Empty when no agent is selected.
|
|
63
|
-
*/
|
|
64
|
-
declare function resolveInstructionFiles(selected: Iterable<Flags>): InstructionFileTarget[];
|
|
65
|
-
//#endregion
|
|
66
3
|
//#region src/types.d.ts
|
|
67
4
|
interface Feature<C = string> {
|
|
68
5
|
label: string;
|
|
@@ -80,6 +17,7 @@ interface Feature<C = string> {
|
|
|
80
17
|
repo?: string;
|
|
81
18
|
disabled?: boolean;
|
|
82
19
|
invisibleCli?: boolean;
|
|
20
|
+
invisibleWeb?: boolean;
|
|
83
21
|
invisibleDescription?: boolean;
|
|
84
22
|
readonly?: boolean;
|
|
85
23
|
selected?: boolean;
|
|
@@ -113,10 +51,6 @@ declare class BatiSet extends Set<Flags> {
|
|
|
113
51
|
/** Prefix to fetch-and-run a package's binary, for `@latest` (`npx`, `pnpm dlx`, `yarn dlx`, `bunx`). */
|
|
114
52
|
get pmDlx(): string;
|
|
115
53
|
get hasServer(): boolean;
|
|
116
|
-
/** At least one AI coding agent is selected — gates skill / instruction-file generation. */
|
|
117
|
-
get hasAiAgent(): boolean;
|
|
118
|
-
/** The selected AI agent flags (subset of claude/codex/gemini/cursor/copilot), in selection order. */
|
|
119
|
-
get aiAgents(): Flags[];
|
|
120
54
|
/** A database engine is selected (SQLite or PostgreSQL). */
|
|
121
55
|
get hasDatabase(): boolean;
|
|
122
56
|
/** An ORM or query builder is selected (Drizzle, Kysely or Prisma). */
|
|
@@ -133,4 +67,9 @@ declare class BatiSet extends Set<Flags> {
|
|
|
133
67
|
get hasPhoton(): boolean;
|
|
134
68
|
}
|
|
135
69
|
//#endregion
|
|
136
|
-
|
|
70
|
+
//#region src/skills.d.ts
|
|
71
|
+
/** Skills are written to the cross-tool `.agents/` standard, read by Codex/Gemini/Cursor/Copilot. */
|
|
72
|
+
declare const SKILLS_DIR = ".agents/skills";
|
|
73
|
+
declare const CLAUDE_SKILLS_DIR = ".claude/skills";
|
|
74
|
+
//#endregion
|
|
75
|
+
export { BatiSet, CLAUDE_SKILLS_DIR, type Category, CategoryLabels, type Feature, type FeatureLink, Flags, SKILLS_DIR, categories, categoriesGroups, cliFlags, features, flags };
|
package/dist/index.js
CHANGED
|
@@ -1,70 +1,4 @@
|
|
|
1
|
-
import { n as features, r as flags, t as cliFlags } from "./features-
|
|
2
|
-
//#region src/ai-agents.ts
|
|
3
|
-
const aiAgentFlags = features.filter((f) => f.category === "AI Agent").map((f) => f.flag);
|
|
4
|
-
/**
|
|
5
|
-
* Per-agent skill + instruction-file targets, verified against each agent's docs (SKILLS_PLAN.md §15):
|
|
6
|
-
* `.agents/skills` is the cross-tool standard (Codex/Gemini/Cursor/Copilot), only Claude needs
|
|
7
|
-
* `.claude/skills`; AGENTS.md is native everywhere except Claude and Gemini, which take an `@`-import.
|
|
8
|
-
*/
|
|
9
|
-
const aiAgents = {
|
|
10
|
-
claude: {
|
|
11
|
-
skillsDir: ".claude/skills",
|
|
12
|
-
instructionFile: "CLAUDE.md",
|
|
13
|
-
instructionImport: "@AGENTS.md"
|
|
14
|
-
},
|
|
15
|
-
codex: {
|
|
16
|
-
skillsDir: ".agents/skills",
|
|
17
|
-
instructionFile: "AGENTS.md",
|
|
18
|
-
instructionImport: null
|
|
19
|
-
},
|
|
20
|
-
gemini: {
|
|
21
|
-
skillsDir: ".agents/skills",
|
|
22
|
-
instructionFile: "GEMINI.md",
|
|
23
|
-
instructionImport: "@./AGENTS.md"
|
|
24
|
-
},
|
|
25
|
-
cursor: {
|
|
26
|
-
skillsDir: ".agents/skills",
|
|
27
|
-
instructionFile: "AGENTS.md",
|
|
28
|
-
instructionImport: null
|
|
29
|
-
},
|
|
30
|
-
copilot: {
|
|
31
|
-
skillsDir: ".agents/skills",
|
|
32
|
-
instructionFile: "AGENTS.md",
|
|
33
|
-
instructionImport: null
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Minimal set of skill directories covering the selected agents (SKILLS_PLAN.md §4) — at most two:
|
|
38
|
-
* `.agents/skills` for Codex/Gemini/Cursor/Copilot, `.claude/skills` for Claude.
|
|
39
|
-
*/
|
|
40
|
-
function resolveSkillDirs(selected) {
|
|
41
|
-
const sel = new Set(selected);
|
|
42
|
-
const dirs = /* @__PURE__ */ new Set();
|
|
43
|
-
for (const flag of aiAgentFlags) if (sel.has(flag)) dirs.add(aiAgents[flag].skillsDir);
|
|
44
|
-
return [...dirs];
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Instruction files for the selected agents (SKILLS_PLAN.md §3): the canonical `AGENTS.md` (always,
|
|
48
|
-
* since the shims import it) plus each agent's file, deduped. Empty when no agent is selected.
|
|
49
|
-
*/
|
|
50
|
-
function resolveInstructionFiles(selected) {
|
|
51
|
-
const sel = new Set(selected);
|
|
52
|
-
if (!aiAgentFlags.some((flag) => sel.has(flag))) return [];
|
|
53
|
-
const byPath = new Map([["AGENTS.md", {
|
|
54
|
-
path: "AGENTS.md",
|
|
55
|
-
import: null
|
|
56
|
-
}]]);
|
|
57
|
-
for (const flag of aiAgentFlags) {
|
|
58
|
-
if (!sel.has(flag)) continue;
|
|
59
|
-
const { instructionFile, instructionImport } = aiAgents[flag];
|
|
60
|
-
byPath.set(instructionFile, {
|
|
61
|
-
path: instructionFile,
|
|
62
|
-
import: instructionImport
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
return [...byPath.values()];
|
|
66
|
-
}
|
|
67
|
-
//#endregion
|
|
1
|
+
import { n as features, r as flags, t as cliFlags } from "./features-CPCPsYbg.js";
|
|
68
2
|
//#region src/groups.ts
|
|
69
3
|
let categoriesGroups = /* @__PURE__ */ function(categoriesGroups) {
|
|
70
4
|
categoriesGroups["Frontend"] = "Frontend";
|
|
@@ -139,10 +73,9 @@ PostgreSQL targets a Postgres server. Selected on its own you get a thin client;
|
|
|
139
73
|
},
|
|
140
74
|
{
|
|
141
75
|
label: "AI Agent",
|
|
142
|
-
multiple: true,
|
|
143
76
|
group: "Utilities",
|
|
144
|
-
description: `Generate agent skills
|
|
145
|
-
|
|
77
|
+
description: `Generate agent skills (SKILL.md) tailored to your selected stack,
|
|
78
|
+
so AI coding agents understand this project's conventions out of the box.`
|
|
146
79
|
},
|
|
147
80
|
{
|
|
148
81
|
label: "Linter",
|
|
@@ -176,7 +109,6 @@ var BatiSet = class extends Set {
|
|
|
176
109
|
#servers;
|
|
177
110
|
#databases;
|
|
178
111
|
#orm;
|
|
179
|
-
#aiAgents;
|
|
180
112
|
pm;
|
|
181
113
|
constructor(flags, allFeatures, pm) {
|
|
182
114
|
super(flags);
|
|
@@ -184,7 +116,6 @@ var BatiSet = class extends Set {
|
|
|
184
116
|
this.#servers = new Set(allFeatures.filter((f) => f.category === "Server").map((f) => f.flag));
|
|
185
117
|
this.#databases = new Set(allFeatures.filter((f) => f.category === "Database").map((f) => f.flag));
|
|
186
118
|
this.#orm = new Set(allFeatures.filter((f) => f.category === "ORM / Query builder").map((f) => f.flag));
|
|
187
|
-
this.#aiAgents = new Set(allFeatures.filter((f) => f.category === "AI Agent").map((f) => f.flag));
|
|
188
119
|
}
|
|
189
120
|
hasOneOf(a) {
|
|
190
121
|
for (const x of this) if (a.has(x)) return true;
|
|
@@ -215,14 +146,6 @@ var BatiSet = class extends Set {
|
|
|
215
146
|
get hasServer() {
|
|
216
147
|
return this.hasOneOf(this.#servers);
|
|
217
148
|
}
|
|
218
|
-
/** At least one AI coding agent is selected — gates skill / instruction-file generation. */
|
|
219
|
-
get hasAiAgent() {
|
|
220
|
-
return this.hasOneOf(this.#aiAgents);
|
|
221
|
-
}
|
|
222
|
-
/** The selected AI agent flags (subset of claude/codex/gemini/cursor/copilot), in selection order. */
|
|
223
|
-
get aiAgents() {
|
|
224
|
-
return [...this].filter((f) => this.#aiAgents.has(f));
|
|
225
|
-
}
|
|
226
149
|
/** A database engine is selected (SQLite or PostgreSQL). */
|
|
227
150
|
get hasDatabase() {
|
|
228
151
|
return this.hasOneOf(this.#databases);
|
|
@@ -253,4 +176,9 @@ var BatiSet = class extends Set {
|
|
|
253
176
|
}
|
|
254
177
|
};
|
|
255
178
|
//#endregion
|
|
256
|
-
|
|
179
|
+
//#region src/skills.ts
|
|
180
|
+
/** Skills are written to the cross-tool `.agents/` standard, read by Codex/Gemini/Cursor/Copilot. */
|
|
181
|
+
const SKILLS_DIR = ".agents/skills";
|
|
182
|
+
const CLAUDE_SKILLS_DIR = ".claude/skills";
|
|
183
|
+
//#endregion
|
|
184
|
+
export { BatiSet, CLAUDE_SKILLS_DIR, SKILLS_DIR, categories, categoriesGroups, cliFlags, features, flags };
|
package/dist/rules.d.ts
CHANGED
package/dist/rules.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as features, r as flags } from "./features-
|
|
1
|
+
import { n as features, r as flags } from "./features-CPCPsYbg.js";
|
|
2
2
|
//#region src/rules/enum.ts
|
|
3
3
|
let RulesMessage = /* @__PURE__ */ function(RulesMessage) {
|
|
4
4
|
RulesMessage[RulesMessage["ERROR_AUTH_R_SERVER"] = 0] = "ERROR_AUTH_R_SERVER";
|