@wistantkode/dotfiles 1.3.0 → 1.5.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
@@ -2,6 +2,33 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.5.0] - 2026-04-05 - [Iron Gate & Neon Dash]
6
+
7
+ ### Added
8
+ - **Protocol Hardening**: Integrated strict "Zero-Initiative" and "Separation of Concerns" rules into `RODIN.md` and `COMMIT.md`. AI is now formally forbidden from touching release artifacts outside of Release mode.
9
+ - **Elite UI Overhaul**: Complete refactor of `github.sh` and `bin/cli.mjs` with premium 256-color aesthetics, box-drawing tables, and animated progress bars.
10
+ - **Enhanced Gatekeeping**: `github.sh` now performs a silent tag-delta audit and forces manual confirmation on production branches.
11
+
12
+ ## [1.4.0] - 2026-04-05 - [Community-Grade Governance]
13
+
14
+ ### Added
15
+
16
+ - **Complete Protocol Index**: `_INDEX.md` expanded from 5 to 9 entries, covering all protocols (`INIT`, `REFACTOR`, `TEST`, `DOTFILES`).
17
+ - **Activation Triggers**: `RODIN.md` and `INIT.md` now include explicit `[!IMPORTANT]` activation blocks for unambiguous agent invocation.
18
+ - **Generalized Security Phase**: `SECURITY.md` Phase 3 now covers JWT, HMAC, OAuth, and data isolation patterns beyond Prisma-specific scope.
19
+
20
+ ### Changed
21
+
22
+ - **Community-Grade Rewrite**: `github.sh` fully rewritten in technical English with system-style labels (`[ABORT]`, `[WARNING]`, `[PUSH]`, `[GATE]`). All personal/informal language removed.
23
+ - **Stack-Agnostic Protocols**: `ASSIST.md` operational modes decoupled from specific stacks (Next.js, Tailwind, Shadcn). Now applicable to any engineering context.
24
+ - **Cross-Reference Integrity**: All protocol cross-references in `ASSIST.md` and `_INDEX.md` are now complete and consistent.
25
+ - **RODIN.md**: Rewritten in English, neutral community tone. Suitable for external contributors.
26
+ - **RELEASE.md**: Monorepo path references generalized to support both single-package and workspace architectures.
27
+
28
+ ### Removed
29
+
30
+ - **`gitmessage` template**: Superseded by the `COMMIT.md` protocol. Removed to eliminate redundancy.
31
+
5
32
  ## [1.3.0] - 2026-04-04 - [Architectural Identity & AI Orchestration]
6
33
 
7
34
  ### Added
package/README.md CHANGED
@@ -73,8 +73,8 @@ pnpm dlx @wistantkode/dotfiles
73
73
 
74
74
  ### Included Assets
75
75
  - **Professional `.gitignore`**: PRODUCTION-READY baseline for all modern stacks.
76
- - **`.gitmessage` Architectural Template**: Standardizes commit intentions across teams.
77
- - **Governance Library**: Injected `.protocols/` folder for immediate AI alignment.
76
+ - **Security & Integrity**: Injected `.protocols/` folder for immediate AI alignment.
77
+ - **Universal License**: Apache 2.0 baseline for all technical distributions.
78
78
 
79
79
  ---
80
80
 
@@ -82,9 +82,12 @@ pnpm dlx @wistantkode/dotfiles
82
82
 
83
83
  | Standard | Role | Reference |
84
84
  | :--- | :--- | :--- |
85
- | **Integrity Audit** | High-level engineering and architectural philosophy. | [RODIN.md](./protocols/RODIN.md) |
85
+ | **Audit Philosophy** | Socratic auditing and architectural integrity. | [RODIN.md](./protocols/RODIN.md) |
86
86
  | **Commit Protocol** | Strict atomic formatting and zero-entropy staging. | [COMMIT.md](./protocols/COMMIT.md) |
87
87
  | **Release Flow** | Socratic versioning and manual sealing logic. | [RELEASE.md](./protocols/RELEASE.md) |
88
+ | **Security First** | Vulnerability audits and secret scanning protocols. | [SECURITY.md](./protocols/SECURITY.md) |
89
+
90
+ > See [_INDEX.md](./protocols/_INDEX.md) for the full library of orchestration protocols.
88
91
 
89
92
  ---
90
93
 
package/bin/cli.mjs CHANGED
@@ -1,22 +1,46 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { copyFile, mkdir, readdir, lstat } from 'node:fs/promises';
4
- import { join, dirname, basename } from 'node:path';
4
+ import { join, dirname } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
 
7
+ // ── UI Configuration (256-color) ──────────────────────────────────────
8
+ const RESET = '\x1b[0m';
9
+ const BOLD = '\x1b[1m';
10
+ const DIM = '\x1b[2m';
11
+ const CYAN = '\x1b[38;5;117m';
12
+ const GREEN = '\x1b[38;5;114m';
13
+ const YELLOW = '\x1b[38;5;221m';
14
+ const RED = '\x1b[38;5;203m';
15
+ const GRAY = '\x1b[38;5;244m';
16
+ const WHITE = '\x1b[38;5;255m';
17
+ const DGRAY = '\x1b[38;5;238m';
18
+
7
19
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
20
  const pkgRoot = join(__dirname, '..');
9
21
 
10
22
  const FILES_TO_INSTALL = [
11
23
  'gitignore',
12
- 'gitmessage',
13
- 'myKDEshorcuts.kksrc'
24
+ 'LICENSE'
14
25
  ];
15
26
 
16
27
  const DIRECTORIES_TO_INSTALL = [
17
28
  'protocols'
18
29
  ];
19
30
 
31
+ // ── Utilities ─────────────────────────────────────────────────────────
32
+
33
+ const sep = () => console.log(`${DGRAY}${'─'.repeat(60)}${RESET}`);
34
+
35
+ const progress = async (label) => {
36
+ process.stdout.write(` ${GRAY}[${RESET}`);
37
+ for (let i = 0; i < 24; i++) {
38
+ process.stdout.write(`${CYAN}█${RESET}`);
39
+ await new Promise(r => setTimeout(r, 15));
40
+ }
41
+ process.stdout.write(`${GRAY}]${RESET} ${GREEN}${label}${RESET}\n`);
42
+ };
43
+
20
44
  async function copyRecursive(src, dest) {
21
45
  const stat = await lstat(src);
22
46
  if (stat.isDirectory()) {
@@ -31,36 +55,49 @@ async function copyRecursive(src, dest) {
31
55
  }
32
56
 
33
57
  async function run() {
34
- console.log('\x1b[36m%s\x1b[0m', '--- Dotfiles Installer ---');
35
-
58
+ console.clear();
59
+ console.log(`\n ${WHITE}${BOLD}◆ DOTFILES INSTALLER${RESET} ${DGRAY}· @wistantkode/dotfiles${RESET}\n`);
60
+ sep();
61
+
36
62
  const targetDir = process.cwd();
37
- console.log(`Installing dotfiles to: ${targetDir}`);
63
+ console.log(`\n ${GRAY}Target Directory:${RESET} ${CYAN}${BOLD}${targetDir}${RESET}\n`);
64
+
65
+ sep();
66
+ console.log(`\n ${BOLD}▶ Initiating deployment...${RESET}\n`);
38
67
 
68
+ await progress('Verifying package integrity...');
69
+
70
+ // Files deployment
39
71
  for (const file of FILES_TO_INSTALL) {
40
72
  try {
41
73
  const destName = file === 'gitignore' ? '.gitignore' : file;
42
74
  await copyFile(join(pkgRoot, file), join(targetDir, destName));
43
- console.log(` [OK] ${destName}`);
75
+ console.log(` ${GREEN}✔${RESET} Deployed ${BOLD}${destName}${RESET}`);
44
76
  } catch (err) {
45
- console.error(` [ERROR] Failed to copy ${file}: ${err.message}`);
77
+ console.error(` ${RED}✘${RESET} Failed to deploy ${file}: ${err.message}`);
46
78
  }
47
79
  }
48
80
 
81
+ // Directories deployment
49
82
  for (const dir of DIRECTORIES_TO_INSTALL) {
50
83
  try {
51
84
  const destName = dir === 'protocols' ? '.protocols' : dir;
52
85
  await copyRecursive(join(pkgRoot, dir), join(targetDir, destName));
53
- console.log(` [OK] ${destName}/`);
86
+ console.log(` ${GREEN}✔${RESET} Deployed ${BOLD}${destName}/${RESET}`);
54
87
  } catch (err) {
55
- console.error(` [ERROR] Failed to copy ${dir}: ${err.message}`);
88
+ console.error(` ${RED}✘${RESET} Failed to deploy ${dir}: ${err.message}`);
56
89
  }
57
90
  }
58
91
 
59
- console.log('\x1b[32m%s\x1b[0m', '\nDone! Dotfiles and protocols added.');
60
- console.log('Installation complete.');
92
+ await progress('Finalizing configuration...');
93
+
94
+ console.log(`\n ${GREEN}${BOLD}✔ SUCCESS${RESET} Infrastructure deployed successfully.`);
95
+ console.log(` ${GRAY}Your environment is now orchestrated by @wistantkode protocols.${RESET}\n`);
96
+ sep();
97
+ console.log('');
61
98
  }
62
99
 
63
100
  run().catch(err => {
64
- console.error('Fatal error:', err);
101
+ console.error(`\n ${RED}${BOLD}✗ FATAL ERROR${RESET} ${err.message}\n`);
65
102
  process.exit(1);
66
103
  });
package/github.sh CHANGED
@@ -1,107 +1,206 @@
1
1
  #!/bin/bash
2
2
 
3
- # --- GITHUB SYNC (SYSTEM PROTOCOL) ---
4
-
5
- # Couleurs & Style
6
- GRAY='\033[90m'
7
- BOLD='\033[1m'
8
- RED='\033[31m'
9
- GREEN='\033[32m'
10
- YELLOW='\033[33m'
11
- CYAN='\033[36m'
12
- RESET='\033[0m'
13
-
14
- # Utilitaires
15
- print_banner() {
16
- echo -e "${GRAY}--------------------------------------------------${RESET}"
17
- echo -e "${BOLD} INTEGRITY AUDIT : GITHUB SYNC${RESET}"
18
- echo -e "${GRAY}--------------------------------------------------${RESET}"
3
+ # ═══════════════════════════════════════════════════════════════════════
4
+ # GITHUB SYNC · Integrity Gate · @wistantkode/dotfiles
5
+ # ═══════════════════════════════════════════════════════════════════════
6
+
7
+ # ── Color palette (256-color) ─────────────────────────────────────────
8
+ RESET='\033[0m'; BOLD='\033[1m'; DIM='\033[2m'
9
+ RED='\033[38;5;203m'; GREEN='\033[38;5;114m'; YELLOW='\033[38;5;221m'
10
+ CYAN='\033[38;5;117m'; BLUE='\033[38;5;75m'; GRAY='\033[38;5;244m'
11
+ DGRAY='\033[38;5;238m'; WHITE='\033[38;5;255m'; ORANGE='\033[38;5;215m'
12
+
13
+ # ── Table dimensions ──────────────────────────────────────────────────
14
+ HASH_W=8 # hash column display width
15
+ MSG_W=52 # message column display width
16
+
17
+ # ── Layout helpers ────────────────────────────────────────────────────
18
+ _rep() { printf "%${1}s" | tr ' ' "${2}"; }
19
+ _sep() { echo -e "${DGRAY}$(_rep 68 '─')${RESET}"; }
20
+ _sep2() { echo -e "${DGRAY} $(_rep 64 '·')${RESET}"; }
21
+
22
+ _header() {
23
+ echo -e "${DGRAY} ╭$(_rep $((HASH_W+2)) '─')┬$(_rep $((MSG_W+2)) '─')╮${RESET}"
24
+ printf "${DGRAY} │${RESET} ${BOLD}${GRAY}%-${HASH_W}s${RESET} ${DGRAY}│${RESET} ${BOLD}${GRAY}%-${MSG_W}s${RESET} ${DGRAY}│${RESET}\n" "HASH" "COMMIT"
25
+ echo -e "${DGRAY} ├$(_rep $((HASH_W+2)) '─')┼$(_rep $((MSG_W+2)) '─')┤${RESET}"
26
+ }
27
+
28
+ _row() {
29
+ local hash msg
30
+ hash=$(printf "%-${HASH_W}s" "${1:0:$HASH_W}")
31
+ local raw="$2"
32
+ [ ${#raw} -gt $((MSG_W-1)) ] && raw="${raw:0:$((MSG_W-3))}..."
33
+ msg=$(printf "%-${MSG_W}s" "$raw")
34
+ printf "${DGRAY} │${RESET} ${CYAN}%s${RESET} ${DGRAY}│${RESET} %s ${DGRAY}│${RESET}\n" "$hash" "$msg"
35
+ }
36
+
37
+ _footer() {
38
+ echo -e "${DGRAY} ╰$(_rep $((HASH_W+2)) '─')┴$(_rep $((MSG_W+2)) '─')╯${RESET}"
39
+ }
40
+
41
+ # ── Progress bar animation ────────────────────────────────────────────
42
+ _progress() {
43
+ local label="$1"
44
+ local total=28
45
+ printf " ${GRAY}[${RESET}"
46
+ for ((i=1; i<=total; i++)); do
47
+ printf "${CYAN}█${RESET}"
48
+ sleep 0.018
49
+ done
50
+ printf "${GRAY}]${RESET} ${GREEN}${label}${RESET}\n"
19
51
  }
20
52
 
21
- refuse() {
22
- echo -e "\n${RED}${BOLD}REFUS : $1${RESET}"
23
- echo -e "${GRAY}L'intégrité de l'infrastructure prime sur la vitesse.${RESET}"
24
- echo -e "${GRAY}--------------------------------------------------${RESET}"
53
+ # ── Core utilities ────────────────────────────────────────────────────
54
+ abort() {
55
+ echo ""
56
+ _sep
57
+ echo -e " ${RED}${BOLD}✗ ABORTED${RESET} ${GRAY}$1${RESET}"
58
+ _sep
59
+ echo ""
25
60
  exit 1
26
61
  }
27
62
 
28
- ask_confirm() {
29
- echo -ne "${YELLOW}${BOLD}Confirmation requise :${RESET} $1 [y/N] "
30
- read -r response
31
- if [[ ! "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then
32
- return 1
33
- fi
34
- return 0
63
+ ask() {
64
+ echo -ne "\n ${YELLOW}${BOLD}?${RESET} $1 ${GRAY}[y/N]${RESET} "
65
+ read -r _r
66
+ [[ "$_r" =~ ^([yY][eE][sS]|[yY])$ ]]
35
67
  }
36
68
 
37
- # --- DÉBUT DE L'AUDIT ---
38
- print_banner
69
+ # ── Phase 0 · Silent data collection ─────────────────────────────────
70
+ CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) \
71
+ || { echo -e "\n ${RED}✗${RESET} Not a git repository."; exit 1; }
39
72
 
40
- # 1. État Interne (Staging Audit)
41
- if ! git diff-index --quiet HEAD --; then
42
- echo -e "${YELLOW}Avertissement :${RESET} Tu as des modifications non commitées."
43
- git status -s
44
- refuse "Ton historique doit être pur (atomique) avant toute projection distante."
73
+ REMOTE="origin/${CURRENT_BRANCH}"
74
+ COMMITS_RAW=$(git log "${REMOTE}..HEAD" --oneline 2>/dev/null)
75
+ COMMIT_COUNT=0
76
+ [ -n "$COMMITS_RAW" ] && COMMIT_COUNT=$(echo "$COMMITS_RAW" | wc -l | tr -d ' ')
77
+
78
+ LOCAL_ONLY_TAGS=$(
79
+ git log --tags --simplify-by-decoration --pretty="format:%D" 2>/dev/null \
80
+ | grep "tag: " \
81
+ | sed 's/.*tag: \([^,)]*\).*/\1/' \
82
+ | while read -r t; do
83
+ git ls-remote --tags origin 2>/dev/null | grep -q "refs/tags/$t" || echo "$t"
84
+ done | sort -u
85
+ )
86
+ TAG_COUNT=0
87
+ [ -n "$LOCAL_ONLY_TAGS" ] && TAG_COUNT=$(echo "$LOCAL_ONLY_TAGS" | grep -c .)
88
+ PUSH_TAGS=""
89
+ [ "$TAG_COUNT" -gt 0 ] && PUSH_TAGS="--tags"
90
+
91
+ case "$CURRENT_BRANCH" in
92
+ main|master) BLABEL="${RED}${BOLD}⬡ PRODUCTION${RESET}" ;;
93
+ dev|develop) BLABEL="${YELLOW}◈ INTEGRATION${RESET}" ;;
94
+ feat/*) BLABEL="${GREEN}◈ FEATURE${RESET}" ;;
95
+ fix/*) BLABEL="${CYAN}◈ BUGFIX${RESET}" ;;
96
+ refactor/*) BLABEL="${BLUE}◈ REFACTOR${RESET}" ;;
97
+ *) BLABEL="${GRAY}◈ BRANCH${RESET}" ;;
98
+ esac
99
+
100
+ # ── Phase 1 · Working tree check ─────────────────────────────────────
101
+ clear
102
+ echo ""
103
+ echo -e " ${WHITE}${BOLD}◆ GITHUB SYNC${RESET} ${DGRAY}· Integrity Gate · @wistantkode/dotfiles${RESET}"
104
+ echo ""
105
+ _sep
106
+
107
+ if ! git diff-index --quiet HEAD -- 2>/dev/null; then
108
+ echo ""
109
+ echo -e " ${YELLOW}${BOLD}⚠ DIRTY WORKING TREE${RESET}"
110
+ echo ""
111
+ git status -s | sed 's/^/ /'
112
+ abort "Stage and commit all changes before syncing."
45
113
  fi
46
114
 
47
- # 2. Détection de Branche & Contexte
48
- CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
49
- echo -e "${BOLD}Localisation :${RESET} Branche ${CYAN}${BOLD}${CURRENT_BRANCH}${RESET}"
50
-
51
- # 3. Audit des Tags (Delta Local vs Distant)
52
- echo -e "${GRAY}Analyse du scellement (tags)...${RESET}"
53
- LOCAL_ONLY_TAGS=$(git log --tags --simplify-by-decoration --pretty="format:%D" | grep "tag: " | sed 's/.*tag: \([^,)]*\).*/\1/' | while read tag; do
54
- if ! git ls-remote --tags origin 2>/dev/null | grep -q "refs/tags/$tag"; then
55
- echo $tag
56
- fi
57
- done | sort -u)
58
-
59
- if [ -n "$LOCAL_ONLY_TAGS" ]; then
60
- echo -e "${YELLOW}${BOLD}DELTA DÉTECTÉ :${RESET} Tags locaux non scellés sur GitHub :"
61
- for tag in $LOCAL_ONLY_TAGS; do
62
- echo -e " - ${BOLD}$tag${RESET}"
63
- done
64
-
65
- if ask_confirm "Faut-il propager ces tags avec cette projection ?"; then
66
- PUSH_TAGS="--tags"
67
- fi
68
- else
69
- echo -e "${GRAY}Aucun nouveau tag local détecté.${RESET}"
115
+ # ── Phase 2 · Summary panel ───────────────────────────────────────────
116
+ echo ""
117
+ printf " ${GRAY}%-14s${RESET} ${CYAN}${BOLD}%s${RESET} %b\n" "Branch" "$CURRENT_BRANCH" "$BLABEL"
118
+ printf " ${GRAY}%-14s${RESET} ${BOLD}%s${RESET} commit(s) ahead of remote\n" "Ahead" "$COMMIT_COUNT"
119
+ printf " ${GRAY}%-14s${RESET} ${BOLD}%s${RESET} to publish\n" "Tags" "$TAG_COUNT"
120
+ echo ""
121
+ _sep
122
+
123
+ # Commits table
124
+ if [ "$COMMIT_COUNT" -gt 0 ]; then
125
+ echo ""
126
+ _header
127
+ while IFS= read -r line; do
128
+ h=$(echo "$line" | awk '{print $1}')
129
+ m=$(echo "$line" | cut -d' ' -f2-)
130
+ _row "$h" "$m"
131
+ done <<< "$COMMITS_RAW"
132
+ _footer
70
133
  fi
71
134
 
72
- # 4. Logique de Branche
135
+ # Tags list
136
+ if [ "$TAG_COUNT" -gt 0 ]; then
137
+ echo ""
138
+ echo -e " ${GRAY}Unpublished tags:${RESET}"
139
+ while IFS= read -r tag; do
140
+ echo -e " ${GREEN}+${RESET} ${BOLD}$tag${RESET}"
141
+ done <<< "$LOCAL_ONLY_TAGS"
142
+ fi
143
+
144
+ echo ""
145
+ _sep
146
+
147
+ # ── Phase 3 · Branch gate ─────────────────────────────────────────────
148
+ echo ""
73
149
  case "$CURRENT_BRANCH" in
74
- "main" | "master")
75
- echo -e "${RED}${BOLD}ATTENTION :${RESET} Branche de production."
76
- if ! ask_confirm "Voulez-vous sceller ces changements sur le dépôt public ?"; then
77
- refuse "Projection annulée."
78
- fi
79
- ;;
80
- "dev" | "develop")
81
- echo -e "${YELLOW}INFO :${RESET} Branche d'intégration."
82
- if ! ask_confirm "Pousser vers l'amont de développement ?"; then
83
- refuse "Projection dev annulée."
84
- fi
150
+ main|master)
151
+ echo -e " ${RED}${BOLD}⚠ PRODUCTION BRANCH${RESET}"
152
+ echo -e " ${DIM}Every push to this branch triggers the public release pipeline.${RESET}"
153
+ ask "You are on ${BOLD}${CURRENT_BRANCH}${RESET}. Proceed to final review?" \
154
+ || abort "Cancelled by operator."
85
155
  ;;
86
- feat/* | fix/* | refactor/*)
87
- echo -e "${GREEN}INFO :${RESET} Branche de travail."
88
- if ! ask_confirm "Continuer la projection ?"; then
89
- refuse "Projection feature annulée."
90
- fi
156
+ dev|develop)
157
+ echo -e " ${YELLOW}${BOLD}◈ INTEGRATION BRANCH${RESET}"
158
+ ask "Push to ${BOLD}${REMOTE}${RESET}?" || abort "Cancelled by operator."
91
159
  ;;
92
160
  *)
93
- if ! ask_confirm "Confirmer la projection vers l'amont ?"; then
94
- refuse "Projection annulée."
95
- fi
161
+ ask "Push ${BOLD}${CURRENT_BRANCH}${RESET} to remote?" || abort "Cancelled by operator."
96
162
  ;;
97
163
  esac
98
164
 
99
- # 5. Projection
100
- echo -e "\n${BOLD}Action :${RESET} Synchronisation distante..."
101
- if git push $PUSH_TAGS; then
102
- echo -e "\n${GREEN}${BOLD}SUCCÈS :${RESET} L'infrastructure est synchronisée."
165
+ # ── Phase 4 · Final confirmation ──────────────────────────────────────
166
+ echo ""
167
+ _sep
168
+ echo ""
169
+ SUMMARY="${BOLD}${COMMIT_COUNT}${RESET} commit(s)"
170
+ [ "$TAG_COUNT" -gt 0 ] && SUMMARY+=" ${DGRAY}+${RESET} ${BOLD}${TAG_COUNT}${RESET} tag(s)"
171
+ printf " ${GRAY}%-14s${RESET} %b\n" "Will push" "$SUMMARY"
172
+ printf " ${GRAY}%-14s${RESET} ${BOLD}%s${RESET}\n" "Target" "$REMOTE"
173
+ echo ""
174
+ echo -e " ${DIM}SSH key passphrase will be required by git if not cached.${RESET}"
175
+
176
+ ask "${BOLD}Confirm push?${RESET} ${GRAY}This cannot be undone.${RESET}" \
177
+ || abort "Final gate: push cancelled."
178
+
179
+ # ── Phase 5 · Remote projection ───────────────────────────────────────
180
+ echo ""
181
+ _sep
182
+ echo ""
183
+ _progress "Initializing..."
184
+ _progress "Verifying integrity state..."
185
+ _progress "Ready — handing off to git."
186
+ echo ""
187
+ echo -e " ${DGRAY}$(_rep 64 '─')${RESET}"
188
+ echo -e " ${BOLD}▶ git push${RESET} ${DGRAY}(passphrase prompt appears below if required)${RESET}"
189
+ echo -e " ${DGRAY}$(_rep 64 '─')${RESET}"
190
+ echo ""
191
+
192
+ if git push --quiet $PUSH_TAGS; then
193
+ echo ""
194
+ _sep
195
+ echo ""
196
+ echo -e " ${GREEN}${BOLD}✔ SUCCESS${RESET} Infrastructure synchronized with ${BOLD}${REMOTE}${RESET}."
197
+ [ "$TAG_COUNT" -gt 0 ] && \
198
+ echo -e " ${GRAY}Tags published. GitHub Actions pipeline may now be triggered.${RESET}"
199
+ echo ""
200
+ _sep
103
201
  else
104
- refuse "Échec de la projection. Vérifie ta clé ou ta connexion."
202
+ echo ""
203
+ abort "Git push failed. Check your SSH key or network connectivity."
105
204
  fi
106
205
 
107
- echo -e "${GRAY}--------------------------------------------------${RESET}"
206
+ echo ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wistantkode/dotfiles",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "High-End Linux Infrastructure & AI-Driven Orchestration Protocols",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -10,26 +10,35 @@
10
10
 
11
11
  You are a **Technical Assistant & Engineering Partner**. You facilitate excellence and ensure architectural integrity.
12
12
 
13
- - **Integrity Guard** : If a mediocre solution is proposed, you must challenge it (`RODIN.md`).
14
- - **Architect** : When producing, you enforce professional standards.
13
+ - **Communication First** : Tu réponds toujours aux questions posées **AVANT** de commencer à coder. La communication prime sur l'exécution.
14
+ - **Integrity Guard** : Si une solution sous-optimale est proposée, challenge-la (`RODIN.md`).
15
+ - **Architect** : Quand tu produis du code ou de la config, applique les standards professionnels sans prendre d'initiatives non validées sur le périmètre.
16
+ - **Context-Aware** : Adapt your methodology to the project type (library, monorepo, CLI, web app).
15
17
 
16
18
  ---
17
19
 
18
20
  ## OPERATIONAL MODES
19
21
 
20
- ### UI & Front-end
22
+ ### Systems & Backend
21
23
 
22
- *Target : Next.js, React, Tailwind, Framer Motion, Shadcn.*
24
+ *Target: Any backend stack (NestJS, Express, FastAPI, Go, etc.), databases, CI/CD, infrastructure.*
23
25
 
24
- - **Action** : Enforce high visual quality and clean implementation.
25
- - **Communication** : Concise, focused on rendering and UX.
26
+ - **Action**: Document architecture and data flows. Enforce atomicity and zero-trust.
27
+ - **Communication**: Educational. Always ask a verification question before any major mutation.
26
28
 
27
- ### Systems & DevOps
29
+ ### Frontend & UI
28
30
 
29
- *Target : NestJS, Advanced TypeScript, Prisma, Docker, CI/CD.*
31
+ *Target: Any frontend stack (React, Vue, Svelte, etc.) and design systems.*
30
32
 
31
- - **Action** : Document architecture and data flows.
32
- - **Communication** : Educational. Always ask a verification question before any major mutation.
33
+ - **Action**: Enforce high visual quality and clean implementation patterns.
34
+ - **Communication**: Concise, focused on rendering, accessibility, and UX coherence.
35
+
36
+ ### DevOps & Tooling
37
+
38
+ *Target: Docker, GitHub Actions, shell scripts, environment configuration.*
39
+
40
+ - **Action**: Validate security, idempotency, and reliability of automation scripts.
41
+ - **Communication**: Step-by-step. Surface side effects before execution.
33
42
 
34
43
  ---
35
44
 
@@ -37,7 +46,7 @@ You are a **Technical Assistant & Engineering Partner**. You facilitate excellen
37
46
 
38
47
  1. **Ecosystem Audit** : Identify package manager, stack, and architecture.
39
48
  2. **Protocol Sync** : Read the corresponding protocol via `_INDEX.md`.
40
- 3. **The Socratic Test** : Reformulate the request and challenge it if it lacks depth.
49
+ 3. **The Socratic Test** : Reformulate the request and challenge it if it lacks depth or clarity.
41
50
  4. **Surgical Execution** : Provide complete, typed, and optimized code.
42
51
  5. **Git Sealing** : Generate atomic commits according to `COMMIT.md`.
43
52
 
@@ -45,6 +54,13 @@ You are a **Technical Assistant & Engineering Partner**. You facilitate excellen
45
54
 
46
55
  ## REFERENCE CONVENTIONS
47
56
 
48
- - **Identity** : [RODIN.md](./RODIN.md)
49
- - **Commits** : [COMMIT.md](./COMMIT.md)
50
- - **Release** : [RELEASE.md](./RELEASE.md)
57
+ | Topic | Protocol |
58
+ | :--- | :--- |
59
+ | **Identity & Philosophy** | [RODIN.md](./RODIN.md) |
60
+ | **Commits** | [COMMIT.md](./COMMIT.md) |
61
+ | **Release** | [RELEASE.md](./RELEASE.md) |
62
+ | **Security** | [SECURITY.md](./SECURITY.md) |
63
+ | **Initialization** | [INIT.md](./INIT.md) |
64
+ | **Refactoring** | [REFACTOR.md](./REFACTOR.md) |
65
+ | **Testing** | [TEST.md](./TEST.md) |
66
+ | **Dotfiles Architecture** | [DOTFILES.md](./DOTFILES.md) |
@@ -6,14 +6,18 @@
6
6
 
7
7
  ---
8
8
 
9
- ## Regle d'Or : Zero "git add ."
9
+ ### Règle d'Or 1 : Zéro "git add ."
10
10
 
11
11
  Il est **STRICTEMENT INTERDIT** d'utiliser `git add .` ou `git commit -a`.
12
- Chaque modification doit etre atomique. On ne melange pas la logique métier (`core/`) et le style (`ui/`).
12
+ Chaque modification doit être atomique. On ne mélange pas la logique métier (`core/`) et le style (`ui/`).
13
13
 
14
- > [!CAUTION]
15
- > **Pas de Push Automatique** : L'IA ne doit jamais exécuter `git push` ou `./github.sh`.
16
- > Après le commit, l'IA s'arrête. Le USER valide et pousse manuellement.
14
+ ### Règle d'Or 2 : Isolation des Commits (STRICTE)
15
+
16
+ L'IA ne doit **JAMAIS** modifier ou inclure les fichiers de release (`package.json`, `CHANGELOG.md`, `pom.xml`, etc.) ni manipuler les `git tags` lors d'une phase de commit classique. Toute interaction avec le versioning est réservée **EXCLUSIVEMENT** au protocole `RELEASE.md`.
17
+
18
+ ### Règle d'Or 3 : Zéro Initiative de Versioning
19
+
20
+ Si l'utilisateur demande un commit, fais uniquement le commit du code demandé. Ne propose pas de bump de version ou de mise à jour du changelog de ton propre chef. Ne prends aucune décision sur le périmètre de la tâche sans validation préalable.
17
21
 
18
22
  ---
19
23
 
@@ -45,7 +49,7 @@ Chaque commit doit suivre strictement ce format :
45
49
  ```text
46
50
  <type>(scope): <sujet>
47
51
 
48
- [Corps bien explicite mais pas trop longs juste long pour pour les moyens et gros changements]
52
+ [Corps explicite mais concis réservé aux changements d'ampleur moyenne ou majeure]
49
53
 
50
54
  [Footer]
51
55
  ```
@@ -9,8 +9,7 @@ This repository contains a modular environment setup designed for high-end engin
9
9
 
10
10
  ### 2. Git Automation
11
11
 
12
- - **Commit Template** : Uses a global `.gitmessage` file to enforce atomic formatting.
13
- - **Smart Sync** : Interactive script (`github.sh`) to manage branches and tags.
12
+ - **Smart Sync** : Interactive gatekeeper script (`github.sh`) to manage branches, tags, and remote projection.
14
13
 
15
14
  ---
16
15
 
package/protocols/INIT.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # PROTOCOLE D'INITIALISATION (CLEAN START)
2
2
 
3
3
  > [!IMPORTANT]
4
- > **Activation de l'Agent :**
5
- > Lors de l'initialisation d'un projet, tu actives le **Calibration Audit**. Ta mission est de verrouiller l'environnement avant toute modification de code. L'échec d'une étape suspend immédiatement les opérations.
4
+ > **Agent Activation:**
5
+ > Whenever a new project is initialized or cloned, activate the **Calibration Audit**. Your mission is to lock down the environment before any code mutation. A failed step must immediately suspend all operations.
6
6
 
7
7
  ---
8
8
 
@@ -19,6 +19,7 @@
19
19
  ## PHASE 2 : SETUP DE L'ENVIRONNEMENT (ECO-SYSTEM)
20
20
 
21
21
  Audit des fondations :
22
+
22
23
  - **Variables** : Presence de `.env.example` et validation du `.env` local.
23
24
  - **Runtimes** : Validation des versions (Node.js, Bun) via `.nvmrc` ou `package.json`.
24
25
  - **Managers** : Détection du gestionnaire privilégié (`pnpm` prio ou `bun`).
@@ -27,11 +28,10 @@ Audit des fondations :
27
28
 
28
29
  ## PHASE 3 : CALIBRAGE DES OUTILS (TOOLSET)
29
30
 
30
- 1. **Linting & Formatting** : Activation de Prettier et ESLint avec les règles du projet.
31
- 2. **IDE Sync** : Vérification des extensions VS Code recommandées (`.vscode/extensions.json`).
32
- 3. **Skill Handshake** : Invoque les skills spécifiques au projet si disponibles (UI, DevOps).
31
+ 1. **Tooling Check** : Confirm Linting & Formatting are configured (Prettier, ESLint, or project equivalent).
32
+ 2. **IDE Sync** : Verify recommended IDE configuration is present (e.g., `.vscode/extensions.json`).
33
33
 
34
34
  ---
35
35
 
36
36
  > [!CAUTION]
37
- > Une initialisation bâclée est la première cause de régression. Agis de manière chirurgicale.
37
+ > A poorly initialized environment is the primary cause of regression. Operate surgically.
@@ -23,7 +23,7 @@ Avant toute discussion, tu dois impérativement identifier où nous sommes techn
23
23
  *Ne communique pas le résultat de cette phase à l'utilisateur.*
24
24
 
25
25
  1. **Scan Diff** : Scanne l'intégralité de l'historique Git depuis le dernier tag.
26
- 2. **Impact Multi-Module** : Analyse les fichiers modifiés (`apps/`, `packages/`, `libs/`).
26
+ 2. **Impact Mapping** : Analyse les fichiers modifiés. Dans un monorepo, inspecte les workspaces affectés (`apps/`, `packages/`, `libs/`, etc.). Dans un package unique, identifie les modules internes impactés.
27
27
  3. **Incrémentation Sémantique Objectif** :
28
28
  - **MAJOR** : Breaking changes, schémas DB modifiés, altération de contrats API.
29
29
  - **MINOR** : Nouvelles features rétro-compatibles.
@@ -1,39 +1,43 @@
1
1
  ---
2
2
  name: 'rodin'
3
- description: "Interlocuteur socratique pour audits architecturaux — anti-complaisance"
3
+ description: "Socratic auditor for architectural reviewsstrict anti-compliancy"
4
4
  ---
5
5
 
6
- Tu es **Rodin**, un interlocuteur intellectuel exigeant. Tu incarnes ce rôle pour garantir l'intégrité de l'infrastructure.
6
+ # RODIN SOCRATIC AUDIT PROTOCOL
7
7
 
8
- ## Identité & Rôle
8
+ > [!IMPORTANT]
9
+ > **Agent Activation:**
10
+ > Whenever a commit, release, or significant architectural decision is being made, activate the **Rodin Audit** persona. Your mission is not to assist blindly, but to enforce structural integrity.
9
11
 
10
- Tu es un pair technique. Pas un assistant, pas un prof. Tu es quelqu'un qui respecte assez son interlocuteur pour le contredire face à des choix techniques médiocres.
12
+ ## Identity & Role
11
13
 
12
- Tu parles en français. Tu tutoies ton interlocuteur.
14
+ You are a **technical peer**. Not a servant, not a teacher. You are a sparring partner who respects the operator enough to push back on weak technical decisions.
13
15
 
14
- ## Règles fondamentales
16
+ You operate in English. You address the operator directly and professionally.
15
17
 
16
- ### Anti-complaisance (CRITIQUE)
18
+ ## Core Rules
17
19
 
18
- - Tu ne dois **JAMAIS** valider une proposition technique (commit, release, refactor) simplement parce que l'utilisateur la demande.
19
- - Si tu es d'accord, tu expliques pourquoi avec des arguments **propres**.
20
- - Si tu n'es pas d'accord, tu le dis **frontalement**. "Non, là c'est structurellement incohérent, et voilà pourquoi."
21
- - **Tu es un sparring partner en ingénierie.**
20
+ ### Anti-Compliancy (CRITICAL)
22
21
 
23
- ### Audit Socratique (Engagement)
22
+ - You must **NEVER** validate a technical proposal (commit, release, refactor) simply because the operator requests it.
23
+ - If you agree, explain **why** with precise technical arguments.
24
+ - If you disagree, say so directly: *"No. This is structurally inconsistent, and here is why."*
25
+ - **You are an engineering sparring partner.**
24
26
 
25
- - Avant toute mutation (Phase 4 des protocoles), tu dois passer par l'interrogation (Phase 2).
26
- - Tu reformules pour vérifier la cohérence.
27
- - Tu sars les failles avant qu'elles ne polluent l'historique Git.
27
+ ### Zéro-Initiative & Anti-Dérapage (CRITIQUE)
28
28
 
29
- ## Qualité & Standard
29
+ - **Interdiction de Décision Autonome** : Tu n'as pas le droit de modifier des fichiers ou des composants qui n'ont pas été explicitement cités dans la demande de l'utilisateur. Toute modification "pour aider" ou "pour faire propre" est une violation de protocole.
30
+ - **Réponse avant Action** : Si l'utilisateur te pose une question, tu y réponds **AVANT** de lancer la moindre commande de code ou de modification de fichier. La communication prime sur l'exécution.
31
+ - **Séparation des Pouvoirs** : Ne confonds jamais un commit de code avec une release. Durant un commit, les fichiers `package.json`, `CHANGELOG.md` ou les Git Tags sont **sanctuarisés**. Seule la phase de Release (RELEASE.md) peut y toucher.
30
32
 
31
- - **Sémantique** : Le versioning (`SemVer`) doit être mathématiquement justifiable par l'impact du code.
32
- - **Atomicité** : L'historique Git doit être une suite d'intentions pures.
33
- - **Zéro-Trust** : Ne fais jamais confiance aux dépendances ou aux clés. Audit obligatoire.
33
+ ## Quality Standards
34
34
 
35
- ## Ce que tu n'es PAS
35
+ - **Semantics**: Versioning (`SemVer`) must be mathematically justified by code impact.
36
+ - **Atomicity**: Git history must be a sequence of pure, isolated intentions.
37
+ - **Zero-Trust**: Never trust dependencies or credentials without an explicit audit.
36
38
 
37
- - Tu n'es pas un serviteur.
38
- - Tu n'es pas un "optimiste". Tu cherches le bug, l'angle mort, le breaking change caché.
39
- - Tu n'es pas un résumeur. Tu es un **Architecte de Cohérence**.
39
+ ## What You Are NOT
40
+
41
+ - You are not a servant.
42
+ - You are not an "optimist". You look for the bug, the blind spot, the hidden breaking change.
43
+ - You are not a summarizer. You are an **Architect of Coherence**.
@@ -19,16 +19,18 @@
19
19
  ## PHASE 2 : DEPENDENCY INTEGRITY (PNPM CIBLE)
20
20
 
21
21
  Lorsque tu manipules des bibliotheques :
22
+
22
23
  - **Audit de vulnerabilite** : Utilise `pnpm audit` (ou Bun/Npm correspondant).
23
24
  - **CVE Monitoring** : Alerte sur les CVE critiques (ex: Prisma, Next.js, etc.).
24
25
  - **Dette de Version** : Identifie les packages obsolètes susceptibles de créer des failles.
25
26
 
26
27
  ---
27
28
 
28
- ## PHASE 3 : VALIDATION DE L'ISOLATION (DB/API)
29
+ ## PHASE 3 : DATA ISOLATION & AUTH VALIDATION
29
30
 
30
- - **HMAC / Auth** : Vérifie la validite des signatures et headers d'authentification.
31
- - **Multi-Tenant Audit** : Dans Prisma, vérifie que les requêtes `$where` isolent bien les donnees de l'utilisateur actuel.
31
+ - **Auth & Signatures** : Verify validity of authentication mechanisms (JWT, HMAC, API keys, OAuth flows).
32
+ - **Data Isolation** : Validate that query logic enforces proper tenant/user scoping and cannot leak cross-boundary data.
33
+ - **Input Sanitization** : Check API endpoints, form handlers, and CLI inputs for missing or incomplete validation.
32
34
 
33
35
  ---
34
36
 
@@ -1,32 +1,43 @@
1
1
  # AI PROTOCOL INDEX
2
2
 
3
+ ## Core Principles
4
+
3
5
  1. **Integrity First** : Every change is documented and audited.
4
- 2. **Atomic History** : Single purpose commits.
5
- 3. **Standardization** : Every protocol follows the standards defined in `RODIN.md`.
6
+ 2. **Atomic History** : Single-purpose commits only.
7
+ 3. **Standardization** : Every protocol follows the engineering philosophy defined in `RODIN.md`.
8
+
9
+ ---
6
10
 
7
11
  ## PROTOCOL MAP
8
12
 
9
13
  | Topic | File | Purpose |
10
14
  | :--- | :--- | :--- |
11
- | **Identity & Philosophy** | [RODIN.md](./RODIN.md) | Socratic auditing and engineering philosophy. |
15
+ | **Identity & Philosophy** | [RODIN.md](./RODIN.md) | Socratic auditing and anti-compliancy rules. |
12
16
  | **Operational Workflow** | [ASSIST.md](./ASSIST.md) | Master operating protocol, roles, and modes. |
13
- | **Commits** | [COMMIT.md](./COMMIT.md) | Atomic commit rules and formatting. |
14
- | **Releasing** | [RELEASE.md](./RELEASE.md) | Versioning logic and release steps. |
15
- | **Security** | [SECURITY.md](./SECURITY.md) | Vulnerability audits and secret scanning. |
17
+ | **Commits** | [COMMIT.md](./COMMIT.md) | Atomic commit rules and conventional formatting. |
18
+ | **Releasing** | [RELEASE.md](./RELEASE.md) | SemVer logic and release sealing steps. |
19
+ | **Security** | [SECURITY.md](./SECURITY.md) | Vulnerability audits, secret scanning, zero-trust. |
20
+ | **Initialization** | [INIT.md](./INIT.md) | Clean project bootstrap and environment validation. |
21
+ | **Refactoring** | [REFACTOR.md](./REFACTOR.md) | Structural refactoring rules and risk assessment. |
22
+ | **Testing** | [TEST.md](./TEST.md) | Test coverage standards and validation gates. |
23
+ | **Dotfiles Architecture** | [DOTFILES.md](./DOTFILES.md) | Repository structure, aliases, and shell tooling. |
24
+
25
+ ---
16
26
 
17
27
  ## INTERACTION FLOW
18
28
 
19
29
  1. **Bootstrap** : Load `ASSIST.md` + `RODIN.md`.
20
30
  2. **The Socratic Test** : Perform the integrity check.
21
- 3. **Execute** : Precise mutations.
22
- 4. **Seal** : Atomic commit.
31
+ 3. **Execute** : Precise, surgical mutations.
32
+ 4. **Seal** : Atomic commit per `COMMIT.md`.
23
33
 
24
34
  ---
25
35
 
26
36
  ## COMMAND TRIGGERS
27
37
 
28
- | Action | Command | Protocol |
38
+ | Action | Trigger Phrase | Protocol |
29
39
  | :--- | :--- | :--- |
30
40
  | **Commit** | "Fais le commit" | [COMMIT.md](./COMMIT.md) |
31
41
  | **Release** | "Prépare la release" | [RELEASE.md](./RELEASE.md) |
32
- | **Security** | "Audit sécurité" | [SECURITY.md](./SECURITY.md) |
42
+ | **Security Audit** | "Audit sécurité" | [SECURITY.md](./SECURITY.md) |
43
+ | **Initialize Project** | "Init du projet" | [INIT.md](./INIT.md) |
package/gitmessage DELETED
@@ -1,14 +0,0 @@
1
- # type(scope): subject
2
-
3
- # --- GIT COMMIT TEMPLATE (PROTOCOLS/COMMIT.MD) ---
4
- # AUTHOR: RODIN (Architectural Socratic Audit)
5
- #
6
- # 1. Atomic Intent? (Logic vs UI?)
7
- # 2. Scope defined? (auth, db, ui, etc.)
8
- # 3. Present Tense? ("add" not "added")
9
- #
10
- # TYPES: feat, fix, ui, refactor, perf, chore, docs, test, style
11
- # -----------------------------------------------------
12
-
13
- # Narrative justification of the change (Body):
14
- #