Files
gh-densom-claude-1password-…/commands/env-init.md
2025-11-29 18:18:39 +08:00

66 lines
2.5 KiB
Markdown

---
description: Initialize a .env.1password template from an existing .env file
argument-hint: [path-to-env-file]
---
You are tasked with creating a `.env.1password` template file from an existing `.env` file.
## Instructions:
1. **Read the .env file**: If the user provided a path argument, use that path. Otherwise, look for `.env` in the current working directory.
2. **Parse the file**: Extract all environment variable key-value pairs. Ignore:
- Empty lines
- Lines starting with `#` (comments)
- Malformed lines without `=`
3. **Generate template**: For each variable, create a line in the format:
```
VAR_NAME=op://vault-name/item-name/field-name
```
You should:
- Keep the variable name exactly as it appears
- For the 1Password reference, suggest a sensible structure:
- `vault-name`: Default to "Private" or ask the user
- `item-name`: Use a descriptive name based on the project or variable context
- `field-name`: Use the variable name in lowercase or the actual field name in 1Password
Example transformation:
```
DATABASE_URL=postgresql://localhost:5432/mydb
API_KEY=abc123secret
```
Becomes:
```
DATABASE_URL=op://Private/project-secrets/database_url
API_KEY=op://Private/project-secrets/api_key
```
4. **Add security header**: Prepend or update the security comment to the top of the generated `.env.1password` file:
```
# This file was auto-generated from .env.1password
# DO NOT commit this file to version control
# Generated on: [current date/time]
```
(Note the blank line after the header)
If the `.env.1password` template file already exists, check for the security header and add it if it does not exist.
5. **Preserve comments**: Keep any comment lines from the original file to maintain documentation.
6. **Write the template**: Save the result as `.env.1password` in the same directory as the source `.env` file.
7. **Output summary**: Show the user:
- How many variables were converted
- The path to the new `.env.1password` file
- A reminder to update the 1Password references to match their actual vault structure
- Instructions: "Edit `.env.1password` to update the `op://` references to match your 1Password vault, item, and field names. Then run `/claude-1password:env-sync` to generate your `.env` file."
## Error Handling:
- If the `.env` file doesn't exist, inform the user and ask if they want to create a new empty template
- If `.env.1password` already exists, ask if they want to overwrite it