Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Hmos Performance Analysis Kit Hiappevent Watch App Launch

ASecurity

订阅应用启动耗时系统事件,仅支持C/C++ Native开发,使用HiAppEvent观察者机制捕获APP_LAUNCH事件,适用于性能分析、启动优化场景

2 stars
0 votes
0 copies
0 views
Added 9/22/2026
developmenttypescriptc++gitapiperformance

Works with

api

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add IsKenKenYa/skills --skill hmos-performance-analysis-kit-hiappevent-watch-app-launch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hmos Performance Analysis Kit Hiappevent Watch App Launch?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Hmos Performance Analysis Kit Hiappevent Watch App Launch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iskenkenya-hmos-performance-analysis-kit-hiappevent-watch-app/badge)](https://www.skillsdirectory.com/skills/iskenkenya-hmos-performance-analysis-kit-hiappevent-watch-app)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SUB_SKILL.md
---
name: hmos-performance-analysis-kit-hiappevent-watch-app-launch
description: 订阅应用启动耗时系统事件,仅支持C/C++ Native开发,使用HiAppEvent观察者机制捕获APP_LAUNCH事件,适用于性能分析、启动优化场景
---

# 订阅启动耗时事件技能(C/C++)

## 功能描述

本技能用于在HarmonyOS应用中通过C/C++ Native代码订阅系统启动耗时事件(APP_LAUNCH)。通过HiAppEvent观察者机制,开发者可以实时捕获应用启动过程中的各项性能指标数据,包括启动时间、进程创建时长、Ability生命周期各阶段耗时等详细信息,用于性能分析和启动优化。

**核心能力**:
- 创建观察者监听系统启动耗时事件
- 支持onReceive实时回调模式(事件立即触发)
- 支持onTrigger条件触发模式(批量处理)
- 解析JSON格式的事件参数数据

**适用范围**:
- 仅支持C/C++ Native开发
- 仅监听DOMAIN_OS领域的EVENT_APP_LAUNCH事件
- 需配合jsoncpp库解析事件参数

**限制条件**:
- API版本要求:HiAppEvent C API起始版本12
- 系统能力:SystemCapability.HiviewDFX.HiAppEvent
- 必须在应用启动时注册观察者
- 观察者名称必须唯一

**典型场景**:
- 应用启动性能分析和优化
- 启动耗时问题定位和调试
- 性能数据采集和统计

## 使用场景

### 触发词
- "订阅启动耗时事件"
- "监听应用启动事件"
- "APP_LAUNCH事件订阅"
- "应用启动性能分析"
- "HiAppEvent C/C++订阅"
- "启动耗时监控"

### 能做
- 创建HiAppEvent观察者订阅系统启动事件
- 实现onReceive回调实时接收启动耗时数据
- 实现onTrigger回调批量处理启动事件
- 解析启动事件的各项性能参数指标
- 移除和销毁观察者释放资源

### 绝不做
- 不用于订阅自定义应用事件(仅支持系统启动事件)
- 不用于ArkTS开发场景(仅支持C/C++ Native)
- 不用于实时性能监控(仅捕获启动时刻的静态数据)
- 不直接处理事件上报到云端(仅本地订阅和处理)

### 补充
- 需要集成jsoncpp开源库解析JSON数据
- 推荐在EntryAbility.onCreate()中注册观察者
- 观察者生命周期需合理管理,避免内存泄漏

## 调用规范和规则

### 输入约束
- 观察者名称:字符串长度不超过32字符,系统内唯一
- 事件过滤:domain为"OS",事件名为"APP_LAUNCH"
- 回调函数:必须实现OnReceive或OnTrigger回调
- 触发条件:row、size、timeout至少设置一个(onTrigger模式)

### 执行约束
- 注册时机:必须在应用启动阶段完成观察者注册
- 最大观察者数量:系统无明确限制,建议不超过10个
- 内存管理:观察者不再使用必须销毁,防止内存泄漏
- 性能考虑:OH_HiAppEvent_AddWatcher涉及I/O操作,性能敏感场景需评估线程选择

### 内容约束
- 禁止在回调函数外直接使用回调指针
- 禁止缓存回调指针数据而不进行深拷贝
- 禁止使用已销毁的观察者指针
- 禁止在回调中进行耗时阻塞操作

### 降级约束
- json解析失败:跳过当前事件,记录日志继续处理后续事件
- 观察者创建失败:返回nullptr,记录错误日志,提示用户检查参数
- 回调未触发:检查触发条件设置,增加调试日志确认事件是否到达
- 内存不足:优先销毁不必要的观察者,释放资源后重新尝试

## 调用流程和步骤

### 步骤1:准备阶段

**前置校验**:
1. 确认开发环境为Native C++工程
2. 确认已导入jsoncpp三方库(json.h、json-forwards.h、jsoncpp.cpp)
3. 确认CMakeLists.txt已添加libhiappevent_ndk.z.so和libhilog_ndk.z.so依赖
4. 确认API版本>=12,系统支持SystemCapability.HiviewDFX.HiAppEvent

**参数准备**:
```cpp
// 导入必要头文件
#include "napi/native_api.h"
#include "json/json.h"
#include "hilog/log.h"
#include "hiappevent/hiappevent.h"

// 定义日志标签
#undef LOG_TAG
#define LOG_TAG "AppLaunchWatcher"

// 定义观察者指针缓存变量
static HiAppEvent_Watcher *systemEventWatcherR = nullptr;  // onReceive模式
static HiAppEvent_Watcher *systemEventWatcherT = nullptr;  // onTrigger模式
```

### 步骤2:实现回调函数

**onReceive回调实现**(实时接收模式):
```cpp
static void OnReceive(const char *domain, const struct HiAppEvent_AppEventGroup *appEventGroups, uint32_t groupLen)
{
    for (uint32_t i = 0; i < groupLen; ++i) {
        for (uint32_t j = 0; j < appEventGroups[i].infoLen; ++j) {
            // 过滤非启动耗时事件
            if (strcmp(appEventGroups[i].appEventInfos[j].domain, DOMAIN_OS) != 0 || 
                strcmp(appEventGroups[i].appEventInfos[j].name, EVENT_APP_LAUNCH) != 0) {
                continue;
            }
            
            // 记录事件基本信息
            OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.domain=%{public}s", 
                        appEventGroups[i].appEventInfos[j].domain);
            OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.name=%{public}s", 
                        appEventGroups[i].appEventInfos[j].name);
            OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.eventType=%{public}d", 
                        appEventGroups[i].appEventInfos[j].type);
            
            // 解析JSON参数
            Json::Value params;
            Json::Reader reader(Json::Features::strictMode());
            if (reader.parse(appEventGroups[i].appEventInfos[j].params, params)) {
                // 提取启动耗时关键指标
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.params.time=%{public}lld", 
                            params["time"].asInt64());
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.params.bundle_name=%{public}s", 
                            params["bundle_name"].asString().c_str());
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.params.start_type=%{public}d", 
                            params["start_type"].asInt());
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.params.response_latency=%{public}d", 
                            params["response_latency"].asInt());
            } else {
                OH_LOG_ERROR(LogType::LOG_APP, "Failed to parse event params JSON");
            }
        }
    }
}
```

**onTrigger回调实现**(条件触发模式):
```cpp
static void OnTake(const char *const *events, uint32_t eventLen)
{
    Json::Reader reader(Json::Features::strictMode());
    for (uint32_t i = 0; i < eventLen; ++i) {
        Json::Value eventInfo;
        if (reader.parse(events[i], eventInfo)) {
            auto domain = eventInfo["domain_"].asString();
            auto name = eventInfo["name_"].asString();
            
            // 过滤启动耗时事件
            if (domain == DOMAIN_OS && name == EVENT_APP_LAUNCH) {
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.domain=%{public}s", domain.c_str());
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.name=%{public}s", name.c_str());
                OH_LOG_INFO(LogType::LOG_APP, "HiAppEvent eventInfo.params.time=%{public}lld", 
                            eventInfo["time"].asInt64());
            }
        } else {
            OH_LOG_ERROR(LogType::LOG_APP, "Failed to parse event JSON");
        }
    }
}

static void OnTrigger(int row, int size)
{
    // 获取指定数量的已接收事件
    OH_HiAppEvent_TakeWatcherData(systemEventWatcherT, row, OnTake);
}
```

### 步骤3:创建并配置观察者

**onReceive模式注册函数**:
```cpp
static napi_value RegisterWatcherReceive(napi_env env, napi_callback_info info)
{
    // 创建观察者
    systemEventWatcherR = OH_HiAppEvent_CreateWatcher("AppLaunchWatcherR");
    if (systemEventWatcherR == nullptr) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to create watcher");
        return {};
    }
    
    // 设置事件过滤条件
    const char *names[] = {EVENT_APP_LAUNCH};
    int result = OH_HiAppEvent_SetAppEventFilter(systemEventWatcherR, DOMAIN_OS, 0, names, 1);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to set event filter, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherR);
        systemEventWatcherR = nullptr;
        return {};
    }
    
    // 设置回调函数
    result = OH_HiAppEvent_SetWatcherOnReceive(systemEventWatcherR, OnReceive);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to set onReceive callback, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherR);
        systemEventWatcherR = nullptr;
        return {};
    }
    
    // 添加观察者开始监听
    result = OH_HiAppEvent_AddWatcher(systemEventWatcherR);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to add watcher, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherR);
        systemEventWatcherR = nullptr;
        return {};
    }
    
    OH_LOG_INFO(LogType::LOG_APP, "Watcher registered successfully");
    return {};
}
```

**onTrigger模式注册函数**:
```cpp
static napi_value RegisterWatcherTrigger(napi_env env, napi_callback_info info)
{
    // 创建观察者
    systemEventWatcherT = OH_HiAppEvent_CreateWatcher("AppLaunchWatcherT");
    if (systemEventWatcherT == nullptr) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to create watcher");
        return {};
    }
    
    // 设置事件过滤条件
    const char *names[] = {EVENT_APP_LAUNCH};
    int result = OH_HiAppEvent_SetAppEventFilter(systemEventWatcherT, DOMAIN_OS, 0, names, 1);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to set event filter, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherT);
        systemEventWatcherT = nullptr;
        return {};
    }
    
    // 设置回调函数
    result = OH_HiAppEvent_SetWatcherOnTrigger(systemEventWatcherT, OnTrigger);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to set onTrigger callback, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherT);
        systemEventWatcherT = nullptr;
        return {};
    }
    
    // 设置触发条件(新增1个事件时触发)
    result = OH_HiAppEvent_SetTriggerCondition(systemEventWatcherT, 1, 0, 0);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to set trigger condition, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherT);
        systemEventWatcherT = nullptr;
        return {};
    }
    
    // 添加观察者开始监听
    result = OH_HiAppEvent_AddWatcher(systemEventWatcherT);
    if (result != 0) {
        OH_LOG_ERROR(LogType::LOG_APP, "Failed to add watcher, error=%{public}d", result);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherT);
        systemEventWatcherT = nullptr;
        return {};
    }
    
    OH_LOG_INFO(LogType::LOG_APP, "Watcher registered successfully");
    return {};
}
```

### 步骤4:注册ArkTS接口

**napi_init.cpp中注册接口**:
```cpp
static napi_value Init(napi_env env, napi_value exports)
{
    napi_property_descriptor desc[] = {
        {"registerWatcherReceive", nullptr, RegisterWatcherReceive, nullptr, nullptr, nullptr, napi_default, nullptr},
        {"registerWatcherTrigger", nullptr, RegisterWatcherTrigger, nullptr, nullptr, nullptr, napi_default, nullptr},
    };
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
    return exports;
}
```

**index.d.ts接口定义**:
```typescript
export const registerWatcherReceive: () => void;
export const registerWatcherTrigger: () => void;
```

### 步骤5:在应用启动时调用

**EntryAbility.ets中调用**:
```typescript
import testNapi from 'libentry.so';

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
        // 注册系统事件观察者
        testNapi.registerWatcherReceive();
        testNapi.registerWatcherTrigger();
    }
}
```

### 步骤6:销毁观察者

**资源释放处理**:
```cpp
// 在合适时机移除和销毁观察者
void CleanupWatchers()
{
    if (systemEventWatcherR != nullptr) {
        OH_HiAppEvent_RemoveWatcher(systemEventWatcherR);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherR);
        systemEventWatcherR = nullptr;
    }
    
    if (systemEventWatcherT != nullptr) {
        OH_HiAppEvent_RemoveWatcher(systemEventWatcherT);
        OH_HiAppEvent_DestroyWatcher(systemEventWatcherT);
        systemEventWatcherT = nullptr;
    }
}
```

## 错误码说明

| 错误码 | 说明 | 解决方法 |
|-------|------|---------|
| 0 | 接口调用成功 | 无需处理 |
| -1 | names参数异常 | 检查事件名称数组是否正确设置 |
| -4 | domain参数异常 | 检查domain是否为有效字符串(DOMAIN_OS) |
| -5 | watcher入参空指针 | 检查观察者指针是否为nullptr,确保创建成功 |
| -6 | 操作顺序有误 | 确保先调用OH_HiAppEvent_AddWatcher再调用TakeWatcherData |
| -7 | 事件处理者为空 | 检查Processor创建是否成功(此场景不涉及) |
| -8 | 事件处理者不存在 | 检查Processor ID是否正确(此场景不涉及) |
| -9 | 参数值无效 | 检查传入参数值是否符合规范 |
| -10 | 事件配置为空 | 检查Config对象是否创建成功 |
| -100 | 操作失败 | 检查系统状态和权限配置 |
| -200 | 无效的用户标识 | 检查UID是否正确(此场景不涉及) |

## 编译和修复问题

### 依赖声明

**CMakeLists.txt配置**:
```cmake
# 添加源文件
add_library(entry SHARED napi_init.cpp jsoncpp.cpp)

# 添加依赖库
target_link_libraries(entry PUBLIC 
    libace_napi.z.so 
    libhilog_ndk.z.so 
    libhiappevent_ndk.z.so
)
```

**jsoncpp集成**:
从 https://github.com/open-source-parsers/jsoncpp 下载源码,按照README中Amalgamated source操作步骤生成:
- jsoncpp.cpp
- json/json.h
- json/json-forwards.h

### 环境要求
- HarmonyOS API版本:>=12
- DevEco Studio:最新版本
- Native C++工程模板
- 系统能力:SystemCapability.HiviewDFX.HiAppEvent

### 常见编译问题

**问题1:找不到hiappevent.h头文件**
```
fatal error: hiappevent/hiappevent.h: No such file or directory
```
**解决方法**:确认工程为Native C++模板,检查SDK路径配置正确

**问题2:jsoncpp编译错误**
```
undefined reference to 'Json::Reader::parse'
```
**解决方法**:确保jsoncpp.cpp已添加到CMakeLists.txt的add_library源文件列表中

**问题3:libhiappevent_ndk.z.so链接失败**
```
cannot find -lhiappevent_ndk.z
```
**解决方法**:检查target_link_libraries中库名是否正确(应为libhiappevent_ndk.z.so)

**问题4:NAPI接口注册失败**
```
TypeError: testNapi.registerWatcherReceive is not a function
```
**解决方法**:检查Init函数中napi_property_descriptor是否正确导出,确认index.d.ts接口定义

## 常见问题与解决方法

### Q1:观察者回调未触发
**原因**:
- 观察者未成功添加
- 事件过滤条件设置错误
- 应用启动未触发APP_LAUNCH事件

**解决方法**:
- 检查OH_HiAppEvent_AddWatcher返回值是否为0
- 确认domain设置为DOMAIN_OS,事件名设置为EVENT_APP_LAUNCH
- 运行应用后退出,再次点击桌面图标启动应用触发事件

### Q2:JSON解析失败
**原因**:
- jsoncpp库未正确集成
- params字段JSON格式异常
- 使用了strict模式解析非标准JSON

**解决方法**:
- 确认jsoncpp.cpp已正确编译链接
- 使用Json::Features::strictMode()确保严格解析
- 添加reader.parse失败的错误处理逻辑

### Q3:观察者内存泄漏
**原因**:
- 观察者创建后未销毁
- 仅调用RemoveWatcher未调用DestroyWatcher
- 观察者指针未置空

**解决方法**:
- 在应用退出或合适时机调用OH_HiAppEvent_DestroyWatcher
- 先RemoveWatcher停止监听,再DestroyWatcher释放内存
- 销毁后将指针置nullptr防止重复释放

### Q4:回调中访问崩溃
**原因**:
- 在回调函数外使用回调指针数据
- 未对回调指针数据进行深拷贝
- 回调函数已返回但指针数据已失效

**解决方法**:
- 仅在回调函数内使用指针数据
- 需缓存数据时进行深拷贝(如strdup复制字符串)
- 不在回调外直接访问appEventGroups指针

### Q5:多个观察者冲突
**原因**:
- 观察者名称重复
- 相同name的观察者会覆盖

**解决方法**:
- 确保每个观察者name唯一
- 使用不同名称区分onReceive和onTrigger模式观察者
- 后注册的同名观察者会覆盖前一个

## 输出结果报告

执行完成后输出以下信息:

**日志输出示例**:
```
HiAppEvent eventInfo.domain=OS
HiAppEvent eventInfo.name=APP_LAUNCH
HiAppEvent eventInfo.eventType=4
HiAppEvent eventInfo.params.time=1780919598366
HiAppEvent eventInfo.params.bundle_version=1.0.0
HiAppEvent eventInfo.params.bundle_name=com.example.myapplication
HiAppEvent eventInfo.params.process_name=com.example.myapplication
HiAppEvent eventInfo.params.start_type=1
HiAppEvent eventInfo.params.icon_input_time=1780919593178
HiAppEvent eventInfo.params.animation_finish_time=568
HiAppEvent eventInfo.params.extend_time=0
HiAppEvent eventInfo.params.response_latency=61
HiAppEvent eventInfo.params.laun_to_start_ability_dur=28
HiAppEvent eventInfo.params.startability_processstart_dur=0
HiAppEvent eventInfo.params.processstart_to_appattach_dur=0
HiAppEvent eventInfo.params.appattach_to_appforeground_dur=0
HiAppEvent eventInfo.params.startability_appforeground_dur=6
HiAppEvent eventInfo.params.appforegr_abilityonforegr_dur=2
HiAppEvent eventInfo.params.abilityonforeg_startwindow_dur=0
```

**启动耗时参数说明**:
- `time`: 启动事件发生的时间戳
- `bundle_version`: 应用版本号
- `bundle_name`: 应用包名
- `process_name`: 进程名称
- `start_type`: 启动类型(1=冷启动,2=热启动)
- `icon_input_time`: 图标输入时间
- `animation_finish_time`: 动画完成时长
- `response_latency`: 响应延迟时长
- `laun_to_start_ability_dur`: Launcher到启动Ability时长
- `startability_processstart_dur`: StartAbility到进程启动时长
- `processstart_to_appattach_dur`: 进程启动到AppAttach时长
- `appattach_to_appforeground_dur`: AppAttach到前台时长
- `startability_appforeground_dur`: StartAbility到前台时长
- `appforegr_abilityonforegr_dur`: 前台到Ability前台时长
- `abilityonforeg_startwindow_dur`: Ability前台到启动窗口时长

**API调用列表**:
- OH_HiAppEvent_CreateWatcher
- OH_HiAppEvent_SetAppEventFilter
- OH_HiAppEvent_SetWatcherOnReceive
- OH_HiAppEvent_SetWatcherOnTrigger
- OH_HiAppEvent_SetTriggerCondition
- OH_HiAppEvent_AddWatcher
- OH_HiAppEvent_TakeWatcherData
- OH_HiAppEvent_RemoveWatcher
- OH_HiAppEvent_DestroyWatcher

## 参考文档

- [API开发指南:订阅启动耗时事件(C/C++)](references/hiappevent-watcher-app-launch-c.md)
- [API参考:HiAppEvent C API头文件](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-hiappevent-h)
- [API参考:HiAppEvent_Watcher结构体](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-hiappevent-hiappevent-watcher)
- [API参考:HiAppEvent_AppEventGroup结构体](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-hiappevent-hiappevent-appeventgroup)

## 完整示例代码

- [C++完整示例:napi_init.cpp](assets/napi_init.cpp)
- [CMakeLists配置示例](assets/CMakeLists.txt)
- [ArkTS接口定义示例](assets/index.d.ts)
- [EntryAbility调用示例](assets/EntryAbility.ets)

## 测试用例

### 正向测试用例
- [测试正常订阅启动事件](tests/test_positive.cpp):验证观察者成功创建和回调触发
- [测试JSON参数解析](tests/test_json_parse.cpp):验证启动耗时参数正确解析

### 边界测试用例
- [测试观察者名称长度限制](tests/test_watcher_name_length.cpp):验证32字符名称限制
- [测试触发条件临界值](tests/test_trigger_condition.cpp):验证row=1、size=0、timeout=0条件

### 异常测试用例
- [测试观察者创建失败处理](tests/test_watcher_create_fail.cpp):验证参数异常时的错误处理
- [测试JSON解析失败处理](tests/test_json_parse_fail.cpp):验证异常JSON数据的降级处理
- [测试观察者销毁场景](tests/test_watcher_destroy.cpp):验证重复销毁和空指针销毁的安全性

Attribution

IsKenKenYaIsKenKenYa
View sourceMore from IsKenKenYa →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284072 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2192 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →