@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 +27 -0
- package/README.md +6 -3
- package/bin/cli.mjs +50 -13
- package/github.sh +182 -83
- package/package.json +1 -1
- package/protocols/ASSIST.md +30 -14
- package/protocols/COMMIT.md +10 -6
- package/protocols/DOTFILES.md +1 -2
- package/protocols/INIT.md +6 -6
- package/protocols/RELEASE.md +1 -1
- package/protocols/RODIN.md +27 -23
- package/protocols/SECURITY.md +5 -3
- package/protocols/_INDEX.md +21 -10
- package/gitmessage +0 -14
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
|
-
-
|
|
77
|
-
- **
|
|
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
|
-
| **
|
|
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
|
|
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
|
-
'
|
|
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.
|
|
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(
|
|
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(`
|
|
75
|
+
console.log(` ${GREEN}✔${RESET} Deployed ${BOLD}${destName}${RESET}`);
|
|
44
76
|
} catch (err) {
|
|
45
|
-
console.error(`
|
|
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(`
|
|
86
|
+
console.log(` ${GREEN}✔${RESET} Deployed ${BOLD}${destName}/${RESET}`);
|
|
54
87
|
} catch (err) {
|
|
55
|
-
console.error(`
|
|
88
|
+
console.error(` ${RED}✘${RESET} Failed to deploy ${dir}: ${err.message}`);
|
|
56
89
|
}
|
|
57
90
|
}
|
|
58
91
|
|
|
59
|
-
|
|
60
|
-
|
|
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(
|
|
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
|
-
#
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
GREEN='\033[
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
echo
|
|
24
|
-
|
|
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
|
-
|
|
29
|
-
echo -ne "${YELLOW}${BOLD}
|
|
30
|
-
read -r
|
|
31
|
-
|
|
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
|
-
#
|
|
38
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
echo
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
75
|
-
echo -e "${RED}${BOLD}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
87
|
-
echo -e "${
|
|
88
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
100
|
-
echo
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
202
|
+
echo ""
|
|
203
|
+
abort "Git push failed. Check your SSH key or network connectivity."
|
|
105
204
|
fi
|
|
106
205
|
|
|
107
|
-
echo
|
|
206
|
+
echo ""
|
package/package.json
CHANGED
package/protocols/ASSIST.md
CHANGED
|
@@ -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
|
-
- **
|
|
14
|
-
- **
|
|
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
|
-
###
|
|
22
|
+
### Systems & Backend
|
|
21
23
|
|
|
22
|
-
*Target
|
|
24
|
+
*Target: Any backend stack (NestJS, Express, FastAPI, Go, etc.), databases, CI/CD, infrastructure.*
|
|
23
25
|
|
|
24
|
-
- **Action
|
|
25
|
-
- **Communication
|
|
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
|
-
###
|
|
29
|
+
### Frontend & UI
|
|
28
30
|
|
|
29
|
-
*Target
|
|
31
|
+
*Target: Any frontend stack (React, Vue, Svelte, etc.) and design systems.*
|
|
30
32
|
|
|
31
|
-
- **Action
|
|
32
|
-
- **Communication
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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) |
|
package/protocols/COMMIT.md
CHANGED
|
@@ -6,14 +6,18 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
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
|
|
12
|
+
Chaque modification doit être atomique. On ne mélange pas la logique métier (`core/`) et le style (`ui/`).
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
52
|
+
[Corps explicite mais concis — réservé aux changements d'ampleur moyenne ou majeure]
|
|
49
53
|
|
|
50
54
|
[Footer]
|
|
51
55
|
```
|
package/protocols/DOTFILES.md
CHANGED
|
@@ -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
|
-
- **
|
|
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
|
-
> **
|
|
5
|
-
>
|
|
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
|
|
31
|
-
2. **IDE Sync** :
|
|
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
|
-
>
|
|
37
|
+
> A poorly initialized environment is the primary cause of regression. Operate surgically.
|
package/protocols/RELEASE.md
CHANGED
|
@@ -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
|
|
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.
|
package/protocols/RODIN.md
CHANGED
|
@@ -1,39 +1,43 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 'rodin'
|
|
3
|
-
description: "
|
|
3
|
+
description: "Socratic auditor for architectural reviews — strict anti-compliancy"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# RODIN — SOCRATIC AUDIT PROTOCOL
|
|
7
7
|
|
|
8
|
-
|
|
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
|
-
|
|
12
|
+
## Identity & Role
|
|
11
13
|
|
|
12
|
-
|
|
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
|
-
|
|
16
|
+
You operate in English. You address the operator directly and professionally.
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
## Core Rules
|
|
17
19
|
|
|
18
|
-
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
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**.
|
package/protocols/SECURITY.md
CHANGED
|
@@ -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 :
|
|
29
|
+
## PHASE 3 : DATA ISOLATION & AUTH VALIDATION
|
|
29
30
|
|
|
30
|
-
- **
|
|
31
|
-
- **
|
|
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
|
|
package/protocols/_INDEX.md
CHANGED
|
@@ -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
|
|
5
|
-
3. **Standardization** : Every protocol follows the
|
|
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
|
|
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) |
|
|
15
|
-
| **Security** | [SECURITY.md](./SECURITY.md) | Vulnerability audits
|
|
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 |
|
|
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
|
-
#
|