Add development-scripts agent skill

Ports generic-scripts-module-v1 into a routed skill: module anatomy, shared
loggers/base modules, Taskfile integration, workflows, and pattern decisions.

Fixes a latent defect in the loggers example that silenced all logging in the
module scaffold: loggers/lib/--index-api.sh now sources --env-vars-reader.sh,
and the reader preserves already-exported values so caller overrides still win.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-30 22:18:55 +03:00
co-authored by Claude Opus 5
parent 39d051b6f0
commit 31a5408a6c
57 changed files with 2051 additions and 1 deletions
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/base/lib/local-storage/-ensure-existance-file-dot-env.sh
. ./.scripts/base/lib/local-storage/-ensure-existance-file.sh
. ./.scripts/base/lib/local-storage/-read-lines-from-file-dot-env.sh
. ./.scripts/base/lib/local-storage/-read-lines-from-file.sh
. ./.scripts/base/lib/local-storage/-reset-file-dot-env.sh
. ./.scripts/base/lib/local-storage/-reset-file.sh
. ./.scripts/base/lib/local-storage/-save-env-variable-2-file-dot-env.sh
. ./.scripts/base/lib/local-storage/-save-env-variable-2-file.sh
. ./.scripts/base/lib/local-storage/-view-file-dot-env.sh
. ./.scripts/base/lib/local-storage/-view-file.sh
@@ -0,0 +1,22 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/local-storage/-ensure-existance-file.sh
_base_localStorage_ensureExistance_fileDotEnv() {
local FUNCTION_NAME="_base_localStorage_ensureExistance_fileDotEnv"
_loggers_debug "${FUNCTION_NAME}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV: ${LOCAL_FILE_DOT_ENV}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV (absolute): ${LOCAL_HOME_DIR}/${LOCAL_FILE_DOT_ENV}"
_base_localStorage_ensureExistance_file "${LOCAL_FILE_DOT_ENV}"
}
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
_base_localStorage_ensureExistance_file() {
local FUNCTION_NAME="_base_localStorage_ensureExistance_file"
# _loggers_info "${FUNCTION_NAME}"
local FILE_RELATIVE_PATH="${1}"
if
[ -z "${FILE_RELATIVE_PATH}" ]
then
_loggers_error "${FUNCTION_NAME}"
_loggers_error "${FUNCTION_NAME}" "Missing mandatory 1st paramter (FILE_RELATIVE_PATH)!"
_loggers_error "${FUNCTION_NAME}"
exit 1
fi
if
[ ! -e "${FILE_RELATIVE_PATH}" ]
then
touch "${FILE_RELATIVE_PATH}"
_loggers_warn "${FUNCTION_NAME}"
_loggers_warn "${FUNCTION_NAME}" "Was absent -> had to create!"
_loggers_warn "${FUNCTION_NAME}"
fi
}
@@ -0,0 +1,26 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/local-storage/-ensure-existance-file.sh
_base_localStorage_readLinesFrom_fileDotEnv() {
local FUNCTION_NAME="_base_localStorage_readLinesFrom_fileDotEnv"
_loggers_debug "${FUNCTION_NAME}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV: ${LOCAL_FILE_DOT_ENV}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV (absolute): ${LOCAL_HOME_DIR}/${LOCAL_FILE_DOT_ENV}"
local RET_VAL=$(
_base_localStorage_readLinesFrom_file "${LOCAL_FILE_DOT_ENV}"
)
_loggers_emptyLine
echo "${RET_VAL[@]}"
}
+35
View File
@@ -0,0 +1,35 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/local-storage/-ensure-existance-file.sh
_base_localStorage_readLinesFrom_file() {
local FUNCTION_NAME="_base_localStorage_readLinesFrom_file"
_loggers_debug "${FUNCTION_NAME}"
local FILE_RELATIVE_PATH="${1}"
_base_localStorage_ensureExistance_file "${FILE_RELATIVE_PATH}"
local RET_VAL=()
while
read -r TMP_FILE_LINE
do
if
[ ! -z "${TMP_FILE_LINE}" ]
then
RET_VAL+=($TMP_FILE_LINE)
fi
done <"${FILE_RELATIVE_PATH}"
echo "${RET_VAL[*]}"
}
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/local-storage/-reset-file.sh
_base_localStorage_reset_fileDotEnv() {
local FUNCTION_NAME="_base_localStorage_reset_fileDotEnv"
_loggers_debug "${FUNCTION_NAME}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV: ${LOCAL_FILE_DOT_ENV}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV (absolute): ${LOCAL_HOME_DIR}/${LOCAL_FILE_DOT_ENV}"
_base_localStorage_reset_file "${LOCAL_FILE_DOT_ENV}"
}
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
_base_localStorage_reset_file() {
local FUNCTION_NAME="_base_localStorage_reset_file"
_loggers_debug "${FUNCTION_NAME}"
local FILE_RELATIVE_PATH="${1}"
if
[ -z "${FILE_RELATIVE_PATH}" ]
then
_loggers_error "${FUNCTION_NAME}"
_loggers_error "${FUNCTION_NAME}" "Missing mandatory 1st paramter (FILE_RELATIVE_PATH)!"
_loggers_error "${FUNCTION_NAME}"
exit 1
fi
rm "${FILE_RELATIVE_PATH}"
touch "${FILE_RELATIVE_PATH}"
}
@@ -0,0 +1,22 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/local-storage/-save-env-variable-2-file.sh
_base_localStorage_saveEnvVariable2_fileDotEnv() {
local FUNCTION_NAME="_base_localStorage_saveEnvVariable2_fileDotEnv"
_loggers_debug "${FUNCTION_NAME}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV: ${LOCAL_FILE_DOT_ENV}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV (absolute): ${LOCAL_HOME_DIR}/${LOCAL_FILE_DOT_ENV}"
_base_localStorage_saveEnvVariable2_file "${LOCAL_FILE_DOT_ENV}"
}
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/-ensure-env-var-key.sh
. ./.scripts/base/lib/-ensure-env-var-value.sh
. ./.scripts/base/lib/-get-env-variable-key-from-line.sh
. ./.scripts/base/lib/local-storage/-ensure-existance-file.sh
. ./.scripts/base/lib/local-storage/-read-lines-from-file.sh
. ./.scripts/base/lib/local-storage/-reset-file.sh
_base_localStorage_saveEnvVariable2_file() {
local FUNCTION_NAME="_base_localStorage_saveEnvVariable2_file"
_loggers_debug "${FUNCTION_NAME}"
_base_ensure_evnVarKey
_base_ensure_evnVarValue
local FILE_RELATIVE_PATH="${1}"
_base_localStorage_ensureExistance_file "${FILE_RELATIVE_PATH}"
local PARAM_ENV_VAR_KEY="${ENV_VAR_KEY}"
local PARAM_ENV_VAR_VALUE="${ENV_VAR_VALUE}"
_loggers_debug "${FUNCTION_NAME}" "ENV_VAR_KEY: ${ENV_VAR_KEY}"
_loggers_debug "${FUNCTION_NAME}" "ENV_VAR_VALUE: ${ENV_VAR_VALUE}"
local FILE_LINES=$(cat "$FILE_RELATIVE_PATH")
_base_localStorage_reset_file "${FILE_RELATIVE_PATH}"
local TMP_KEY_STATUS=""
echo "$FILE_LINES" | while IFS= read -r FILE_LINE; do
local TMP_ENV_VAR_KEY=$(
_base_getEnvVariableKey_fromLine "${FILE_LINE}"
)
if
[ "${PARAM_ENV_VAR_KEY}" = "${TMP_ENV_VAR_KEY}" ]
then
echo "${PARAM_ENV_VAR_KEY}=\"${PARAM_ENV_VAR_VALUE}\"" >>"${FILE_RELATIVE_PATH}"
TMP_KEY_STATUS="REPLACED"
else
echo "${FILE_LINE}" >>"${FILE_RELATIVE_PATH}"
fi
done
if
[ ! "${TMP_KEY_STATUS}" = "REPLACED" ]
then
echo "${PARAM_ENV_VAR_KEY}=\"${PARAM_ENV_VAR_VALUE}\"" >>"${FILE_RELATIVE_PATH}"
fi
}
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
. ./.scripts/base/lib/local-storage/-ensure-existance-file-dot-env.sh
. ./.scripts/base/lib/local-storage/-view-file.sh
_base_localStorage_view_fileDotEnv() {
local FUNCTION_NAME="_base_localStorage_view_fileDotEnv"
_loggers_debug "${FUNCTION_NAME}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV: ${LOCAL_FILE_DOT_ENV}"
_loggers_info "${FUNCTION_NAME}" "LOCAL_FILE_DOT_ENV (absolute): ${LOCAL_HOME_DIR}/${LOCAL_FILE_DOT_ENV}"
_base_localStorage_ensureExistance_file "${LOCAL_FILE_DOT_ENV}"
_base_localStorage_view_file "${LOCAL_FILE_DOT_ENV}"
}
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
# -------------------------------------------------------------------------------------
# IBM Confidential
# 6949-70F, 6949-80D
# © Copyright IBM Corp. 2018, 2024
# US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
# -------------------------------------------------------------------------------------
. ./.scripts/loggers/lib/--index-api.sh
_base_localStorage_view_file() {
local FUNCTION_NAME="_base_localStorage_view_file"
_loggers_debug "${FUNCTION_NAME}"
local FILE_RELATIVE_PATH="${1}"
if
[ -z "${FILE_RELATIVE_PATH}" ]
then
_loggers_error "${FUNCTION_NAME}"
_loggers_error "${FUNCTION_NAME}" "Missing mandatory 1st paramter (FILE_RELATIVE_PATH)!"
_loggers_error "${FUNCTION_NAME}"
exit 1
fi
_loggers_emptyLine
cat "${FILE_RELATIVE_PATH}"
_loggers_emptyLine
}