ソース情報
- リポジトリ
- paralect/hive
- ソースの最終更新活動
- 2026年2月13日 16:15
- 検出された SKILL.md の言語
- 英語
- スター
- 0
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/paralect/hive --skill hive-middlewareコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SOC 職業分類に基づく
SKILL.md を表示中
| name | hive-middleware |
| description | How to create and use middlewares in Hive framework |
| globs | ["src/middlewares/*.js"] |
| alwaysApply | false |
Location: /src/middlewares/{name}.js
| Name | Purpose |
|---|---|
allowNoAuth | Skip authentication |
isAuthorized | Require authenticated user |
shouldExist | Load resource, 404 if not found |
attachUser | Load user from token |
Simple:
export default async (ctx, next) => {
// Before handler
if (!ctx.state.user?.isAdmin) {
ctx.throw(403, 'Admin only');
}
return next(); // Don't forget!
};
With parameters:
export default (resourceName) => async (ctx, next) => {
const doc = await db.services[resourceName].findOne({
_id: ctx.params[`${resourceName}Id`],
});
if (!doc) ctx.throw(404, `${resourceName} not found`);
ctx.state[resourceName] = doc;
return next();
};
With runOrder (lower runs first):
const middleware = async (ctx, next) => {
ctx.state.isSkipAuth = true;
return next();
};
middleware.runOrder = -1;
export default middleware;
// By name
export const middlewares = ['allowNoAuth'];
// With arguments
export const middlewares = [{ name: 'shouldExist', args: ['projects'] }];
// Direct import
import isAdmin from 'middlewares/isAdmin';
export const middlewares = [isAdmin];
// Factory function
import canEditProject from 'middlewares/canEditProject';
export const middlewares = [canEditProject((ctx) => ctx.params.projectId)];
// Inline
export const middlewares = [
async (ctx, next) => {
// Custom logic
return next();
},
];
Create /src/middlewares/global.js to run on all endpoints:
import isAuthorized from 'middlewares/isAuthorized';
import attachRootProject from 'middlewares/attachRootProject';
export default async (ctx, next) => {
await isAuthorized(ctx, async () => {
await attachRootProject(ctx, next);
});
};
next() or throwrunOrder to control execution order