본문으로 건너뛰기
cccskills
무료GitHub에 공개

add-npm-package

modules/npm/packages/ に新しい npm/pnpm パッケージを追加するスキル

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

npm パッケージ追加スキル

modules/npm/packages/ に新しいパッケージの .nix ファイルを作成し、home-manager switch で反映する。

手順

1. 最新バージョンの確認

curl -s https://api.github.com/repos/<owner>/<repo>/releases/latest | grep '"tag_name"'

2. src.hash の取得

ダミーハッシュを入れてビルドし、エラーから正しい値を読み取る。

src = pkgs.fetchFromGitHub {
  owner = "<owner>";
  repo = "<repo>";
  rev = "v${version}";
  hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";  # ダミー
};
nix-build /tmp/test.nix 2>&1 | grep "got:"
# → got: sha256-xxxxx  ← この値を使う

3. pnpmDeps.hash の取得 (pnpm プロジェクトの場合)

まず lockfile のバージョンを確認する:

curl -s https://raw.githubusercontent.com/<owner>/<repo>/v<version>/pnpm-lock.yaml | head -1
# lockfileVersion: '9.0' → fetcherVersion = 1
lockfileVersionfetcherVersion
'9.0' (pnpm v9以降)1
'6.0' 以前不要 (省略)

同様にダミーハッシュで失敗させて取得:

pnpmDeps = pkgs.pnpm.fetchDeps {
  pname = "<pname>";
  inherit version src;
  fetcherVersion = 1;
  hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";  # ダミー
};

4. buildPhase の確認

package.json の scripts を確認し、CLI と Web UI の両方をビルドするスクリプトを選ぶ:

curl -s https://raw.githubusercontent.com/<owner>/<repo>/v<version>/package.json \
  | python3 -c "import json,sys; d=json.load(sys.stdin); [print(k,':',v) for k,v in d.get('scripts',{}).items()]"
  • CLI のみのツールなら build:cli 相当のスクリプトで十分
  • Web UI を持つツール (ブラウザを開くもの) は build など全体をビルドするスクリプトを使う

5. bin のエントリポイント確認

curl -s https://raw.githubusercontent.com/<owner>/<repo>/v<version>/package.json \
  | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('bin'))"

6. .nix ファイルの作成

modules/npm/packages/<pname>.nix:

{ pkgs }:
let
  version = "<x.y.z>";
  src = pkgs.fetchFromGitHub {
    owner = "<owner>";
    repo = "<repo>";
    rev = "v${version}";
    hash = "sha256-<src-hash>";
  };
  pnpmDeps = pkgs.pnpm.fetchDeps {
    pname = "<pname>";
    inherit version src;
    fetcherVersion = 1;
    hash = "sha256-<pnpm-deps-hash>";
  };
in
pkgs.stdenv.mkDerivation {
  pname = "<pname>";
  inherit version src;
  nativeBuildInputs = [
    pkgs.nodejs_22
    pkgs.pnpmConfigHook
    pkgs.makeWrapper
  ];
  inherit pnpmDeps;
  buildPhase = ''
    pnpm run build
  '';
  installPhase = ''
    mkdir -p $out/lib/<pname> $out/bin
    cp -r dist node_modules package.json $out/lib/<pname>/
    find $out/lib/<pname>/node_modules -xtype l -delete
    makeWrapper ${pkgs.nodejs_22}/bin/node $out/bin/<pname> \
      --add-flags "$out/lib/<pname>/dist/<entrypoint>.js"
  '';
}

モノレポ構成の注意: pnpm workspace でローカルパッケージへの symlink が node_modules に含まれる場合がある。find -xtype l -delete で broken symlink を削除すること。

7. フォーマットとビルド確認

nixfmt modules/npm/packages/<pname>.nix
git add modules/npm/
home-manager build --flake .

8. 動作確認と反映

home-manager switch --flake .
<pname> --help

npm プロジェクト (pnpm でない) の場合

pnpmDeps の代わりに buildNpmPackage を使う:

pkgs.buildNpmPackage {
  pname = "<pname>";
  inherit version src;
  nodejs = pkgs.nodejs_22;
  npmDepsHash = "sha256-<hash>";  # 同様にダミーで取得
}

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

install/ 配下に新しいセットアップ用シェルスクリプトを追加するスキル

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rito528/dotfiles22026년 10월 18일 업데이트

GitHub issue を新規作成・下書きするとき、または既存 issue の本文を書き直すときに必ず使うスキル。「issue を作って」「issue 化して」「これを issue にまとめて」のような依頼で発火し、`gh issue create` を直接呼ぶ前に必ず参照する。人間が合意した内容だけを、意味を足さずに issue へ残すための基準を定める。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rito528/dotfiles22026년 10월 18일 업데이트

create-pr

무료

GitHub に Pull Request を作成するスキル。ユーザーが「PRを作って」「プルリクエストを出して」「PR作成して」と言ったとき、またはコミット済みの変更をレビューに出したいときに使用する。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rito528/dotfiles22026년 10월 18일 업데이트

ドメインモデル、可視性、操作可能性、不変条件、層境界、API 設計に関わる実装時に使う。不正な状態や誤った呼び出し方を、型、関数の境界、ドメイン語彙で表し、正しい使い方が自然になる設計へ寄せるためのスキル。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rito528/dotfiles22026년 10월 18일 업데이트

コミットやPR作成の前に、作業ブランチが適切かどうかを確認・切り替えるスキル。git-commit や create-pr からサブルーチンとして呼び出される。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rito528/dotfiles22026년 10월 18일 업데이트

コードを実装・修正・リファクタリングするすべてのタスクで使うスキル。純粋関数を中心に設計し、副作用(DB、HTTP、ファイル、時刻、乱数、ログなど)を境界へ寄せ、データ変換、エラー表現、コレクション操作、可変状態の扱いを既存コードに合う形で整理する。ユーザーが明示的に指示しなくても、言語を問わず、コードを書き始める前に発火する。設定値やドキュメントだけの変更では不要。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rito528/dotfiles22026년 10월 18일 업데이트

rito528의 스킬 모두 보기

이 스킬의 문제 신고