diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..3b0a5d4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,64 @@ +name: Bug report +description: Report a reproducible problem in this extension pack or its guidance. +title: "[Bug] " +labels: + - bug +body: + - type: markdown + attributes: + value: | + Thanks for filing a bug report. Please include enough detail for us to reproduce quickly. + - type: input + id: vscode_version + attributes: + label: VS Code version + placeholder: e.g. 1.101.2 + validations: + required: true + - type: input + id: extension_pack_version + attributes: + label: Angular Essentials version + placeholder: e.g. 22.0.1 + validations: + required: true + - type: dropdown + id: os + attributes: + label: Operating system + options: + - macOS + - Windows + - Linux + - Other + validations: + required: true + - type: textarea + id: repro + attributes: + label: Reproduction steps + description: Include exact steps and which extension seems to trigger the issue when enabled alone. + placeholder: | + 1. Install extension pack + 2. Enable only extension X + 3. ... + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + validations: + required: true + - type: textarea + id: actual + attributes: + label: Actual behavior + validations: + required: true + - type: textarea + id: notes + attributes: + label: Additional context + description: Logs, screenshots, and settings snippets are helpful. + diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..eaae26d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,47 @@ +name: Feature request +description: Suggest a new extension or maintenance improvement for this extension pack. +title: "[Feature] " +labels: + - enhancement +body: + - type: markdown + attributes: + value: | + Thanks for the idea. This pack stays intentionally small, so please focus on broad, high-value additions. + - type: input + id: extension_name + attributes: + label: Extension name (if applicable) + placeholder: e.g. publisher.extension-id + - type: input + id: marketplace_url + attributes: + label: Marketplace URL + placeholder: https://marketplace.visualstudio.com/items?itemName=publisher.extension-id + - type: textarea + id: problem + attributes: + label: Problem statement + description: What developer problem does this solve? + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed change + description: Describe the exact change you want in this repo. + validations: + required: true + - type: textarea + id: rationale + attributes: + label: Why this should be in Angular Essentials + description: Explain broad usefulness, maintenance confidence, and why this belongs in a curated core pack. + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Any tradeoffs, risks, or alternatives? + diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..8641da1 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,64 @@ +# Copilot instructions for vscode-angular-essentials + +This repository is a **VS Code extension pack**. Treat it as a metadata/release repo, not an Angular runtime app. + +## Project intent + +- Keep the extension pack minimal, stable, and broadly useful for Angular developers. +- Prefer well-maintained, mainstream extensions over niche additions. +- Avoid deprecated tooling and references. + +## Core files and responsibilities + +- `package.json` + - Source of truth for extension metadata, version, and `extensionPack`. +- `README.md` + - Public-facing docs and included extension Marketplace links. +- `CHANGELOG.md` + - Release history and rationale. +- `CONTRIBUTING.md` + - Contributor flow expectations. + +## Conventions mined from prior maintenance + +- Extension list changes should include docs + changelog updates in the same PR. +- Remove outdated/deprecated integrations when surfaced in issues/PRs. +- Keep release changes explicit and small; avoid unrelated churn. +- Prefer direct Marketplace links over retired badge providers. + +## Code change conventions + +- Make targeted edits only; do not reformat large files unnecessarily. +- Keep naming consistent with existing extension IDs (exact case where required by Marketplace IDs). +- Do not add runtime/framework assumptions (no Angular package upgrades in this repo unless explicitly requested). + +## Testing and validation conventions + +- Run packaging validation after meaningful manifest/docs release changes: + - `npm run package` +- For release actions, ensure version and changelog are aligned before publish: + - `package.json` version + - top changelog entry in `CHANGELOG.md` + +## Asset/content rules + +- `README.md` should match the current `extensionPack` entries. +- Changelog entries should be chronological, newest first. +- Keep icon/image references stable unless intentionally updating branding. + +## Maintenance matrix + +| If you change | Also review/update | Why | +| --- | --- | --- | +| `package.json` `extensionPack` | `README.md` Included table, `CHANGELOG.md` | Keep public docs and release notes synchronized with manifest | +| `package.json` `version` | `CHANGELOG.md`, release/publish workflow steps | Prevent marketplace version/changelog drift | +| Included extension IDs | Case-sensitive Marketplace links in `README.md` | Broken IDs/links cause install confusion | +| Publish/package scripts | `.github/workflows/ci.yml` | CI should reflect real packaging commands without unnecessary install steps | +| Contribution process or review expectations | `CONTRIBUTING.md`, PR template(s) | Keep contributor guidance and review rubric aligned | +| Legacy templates at repo root | `.github/ISSUE_TEMPLATE/*.yml` and guidance docs | Preserve compatibility while moving to modern forms | + +## What not to do + +- Don’t add speculative dependencies or framework tooling. +- Don’t overwrite existing contributor docs wholesale; patch specific sections. +- Don’t delete legacy templates unless asked; prefer additive migration. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..5112e21 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +name: CI + +on: + pull_request: + branches: + - main + paths-ignore: + - "**/*.md" + - "LICENSE*" + push: + branches: + - main + paths-ignore: + - "**/*.md" + - "LICENSE*" + +jobs: + build-and-validate: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "18" + + - name: Validate extension manifest shape + run: | + node -e "const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));if(!p.extensionPack||!Array.isArray(p.extensionPack)||p.extensionPack.length===0){throw new Error('package.json extensionPack must be a non-empty array');}if(!p.version){throw new Error('package.json version is required');}if(!p.publisher){throw new Error('package.json publisher is required');}console.log('package.json manifest checks passed');" + + - name: Package extension + run: npm run package diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..784d3ad --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,78 @@ +# AGENTS.md + +## Project Overview + +This repository publishes the **Angular Essentials** VS Code extension pack (`johnpapa.angular-essentials`). +It is a metadata-first project: the main source of truth is `package.json` (`extensionPack`, metadata, version), with supporting release notes in `CHANGELOG.md` and user-facing docs in `README.md`. + +## Repository Structure + +- `package.json` — extension manifest, extension pack entries, version, publish scripts +- `README.md` — marketplace-facing docs and included extension links +- `CHANGELOG.md` — release history +- `CONTRIBUTING.md` — contribution process +- `ISSUE_TEMPLATE.md` / `PULL_REQUEST_TEMPLATE.md` — legacy root templates +- `.devcontainer/` — development container config +- `images/` — extension icon assets + +## Tech Stack + +- Node.js tooling via npm scripts +- VS Code extension packaging/publishing via `vsce` +- No runtime application code; this repo manages extension-pack metadata + +## Build & Run + +- Package extension: + - `npm run package` +- Publish extension (maintainers): + - `npm run publish` +- Local extension-pack test: + - Open VS Code in this repo and press `F5` (see `vsc-extension-quickstart.md`) + +## Testing + +There is no unit/integration test suite in this repo. +Validation is packaging-oriented: + +- Ensure manifest is valid and pack still builds: `npm run package` +- Verify docs and manifest stay in sync (`README.md`, `CHANGELOG.md`, `package.json`) + +## Key Patterns and Conventions + +- Keep the extension pack curated and broadly useful; avoid niche or deprecated extensions. +- When changing included extensions, update all linked surfaces in one PR: + - `package.json` (`extensionPack`) + - `README.md` (Included table links) + - `CHANGELOG.md` +- Use direct VS Marketplace links in README; avoid retired badge providers. +- Versioning follows release intent: + - major for Angular-major branding updates + - patch for documentation/maintenance updates + +## CI/CD + +- CI validation workflow: `.github/workflows/ci.yml` +- Release is marketplace publish via `npm run publish` (maintainer-driven) + +## Adding or Removing an Extension from the Pack + +1. Edit `package.json` and update `extensionPack`. +2. Update `README.md` Included table so docs match manifest. +3. Add a `CHANGELOG.md` entry in the current release section. +4. Run `npm run package` to validate packaging. +5. Open a PR with clear rationale (value, maintenance burden, deprecation risk). + +## Common Pitfalls + +- Updating only one of README/manifest/changelog and leaving the others stale. +- Reintroducing deprecated tooling/extensions. +- Publishing without bumping `package.json` version and changelog. +- Assuming this is an Angular runtime repo; it is a VS Code extension-pack repo. + +## Documentation Status + +This repo intentionally has lightweight docs: + +- Primary docs: `README.md`, `CONTRIBUTING.md`, `CHANGELOG.md` +- No separate docs site is currently needed for this project size/scope. diff --git a/README.md b/README.md index 927c847..cfb982b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Angular Essentials - Extension Pack for VS Code +[![AI Ready](https://img.shields.io/badge/AI--Ready-yes-brightgreen?style=flat)](https://github.com/johnpapa/ai-ready) [![Installs](https://img.shields.io/visual-studio-marketplace/i/johnpapa.angular-essentials)](https://marketplace.visualstudio.com/items?itemName=johnpapa.angular-essentials) [![The MIT License](https://img.shields.io/badge/license-MIT-orange.svg?color=blue&style=flat-square)](http://opensource.org/licenses/MIT) @@ -27,3 +28,19 @@ This extension pack includes the following extensions: | GitHub Copilot Chat | [GitHub.copilot-chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat) | | Prettier | [esbenp.prettier-vscode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) | | Winter is Coming | [johnpapa.winteriscoming](https://marketplace.visualstudio.com/items?itemName=johnpapa.winteriscoming) | + +## Contributing + +Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a PR. + +For extension-pack changes, keep these files in sync: + +- `package.json` (`extensionPack`, version, metadata) +- `README.md` (Included extension links) +- `CHANGELOG.md` (release notes) + +Before submitting a PR, run: + +```sh +npm run package +```