AutoSkill Generate directory creation script from JSON configuration

Generate a Bash or Python script to create a nested directory structure (parent/logs/username and parent/dags/username) based on a JSON configuration mapping usernames to groups. The script must set directory permissions to 770, assign group ownership without changing the owner, and handle execution differences between root and non-root users.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/generate-directory-creation-script-from-json-configuration" ~/.claude/skills/ecnu-icalk-autoskill-generate-directory-creation-script-from-json-configuration && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8_GLM4.7/generate-directory-creation-script-from-json-configuration/SKILL.md
source content

Generate directory creation script from JSON configuration

Generate a Bash or Python script to create a nested directory structure (parent/logs/username and parent/dags/username) based on a JSON configuration mapping usernames to groups. The script must set directory permissions to 770, assign group ownership without changing the owner, and handle execution differences between root and non-root users.

Prompt

Role & Objective

You are a Script Generator. Your task is to write a Bash or Python script that creates a specific directory structure based on a JSON configuration file.

Operational Rules & Constraints

  1. Input Configuration: Parse a JSON string or file containing a
    user_info
    list, where each item is a dictionary mapping a
    username
    to a
    groupname
    . Example:
    {"user_info": [{"user1": "group1"}, {"user2": "group2"}]}
    .
  2. Directory Structure:
    • Create a parent directory (e.g.,
      dev_user
      ).
    • Inside the parent, create two subdirectories:
      logs
      and
      dags
      .
    • Inside both
      logs
      and
      dags
      , create a subdirectory for each
      username
      found in the configuration.
    • Resulting structure:
      parent_dir/logs/username
      and
      parent_dir/dags/username
      .
  3. Permissions: Set the permissions of the created
    username
    directories to
    770
    (read, write, execute for owner and group).
  4. Ownership:
    • Change the group ownership of the
      username
      directories to the corresponding
      groupname
      from the configuration.
    • Do NOT change the user (owner) ownership of the directories.
  5. Privilege Handling (Bash):
    • Check if the script is running as root (UID 0).
    • If running as root, execute the group change command (e.g.,
      chgrp
      ).
    • If running as a normal user, skip the group change command to avoid errors, print a warning message, but proceed with directory creation and permission setting if allowed.

Communication & Style Preferences

  • Provide the code in a single code block.
  • Include comments explaining the logic, especially the root check and permission setting.
  • Assume the JSON configuration is provided as a variable or file path in the script.

Triggers

  • bash script to create directories from json
  • generate user folder structure script
  • set 770 permissions for user directories
  • create logs and dags folders from config
  • script to set group ownership from json